Beispiel #1
0
 def test_synchronousFlatten(self):
     """
     Flattening a L{Element} with no Deferreds using the old synchronous
     flattener API returns a value synchronously.
     """
     element = Element()
     element.docFactory = stan(["hello, world"])
     self.assertEqual(synchronousFlatten(element), "hello, world")
 def test_synchronousFlatten(self):
     """
     Flattening a L{Element} with no Deferreds using the old synchronous
     flattener API returns a value synchronously.
     """
     element = Element()
     element.docFactory = stan(["hello, world"])
     self.assertEqual(synchronousFlatten(element), "hello, world")
 def test_synchronousFlattenError(self):
     """
     If the old flattener encounters an exception while flattening an
     L{IRenderable}, the exception is raised to the caller of the flattener
     API.
     """
     element = Element()
     element.docFactory = stan(invisible(render=directive('foo')))
     self.assertRaises(FlattenerError, synchronousFlatten, element)
Beispiel #4
0
 def test_synchronousFlattenError(self):
     """
     If the old flattener encounters an exception while flattening an
     L{IRenderable}, the exception is raised to the caller of the flattener
     API.
     """
     element = Element()
     element.docFactory = stan(invisible(render=directive('foo')))
     self.assertRaises(FlattenerError, synchronousFlatten, element)
Beispiel #5
0
 def test_flattenable(self):
     """
     Flattening L{Element} instances with the new flatten function results in
     the flattened version of whatever their C{render} method returns.
     """
     element = Element()
     element.docFactory = stan(["Hello, world"])
     result = []
     finished = newFlatten(FakeRequest(), element, False, False, result.append)
     finished.addCallback(lambda ignored: "".join(result))
     finished.addCallback(self.assertEqual, "Hello, world")
     return finished
Beispiel #6
0
 def test_oldFlattenableInAttribute(self):
     """
     Flattening a L{Element} as the value of an attribute of a L{Tag} XML
     attribute escapes the element's flattened document.
     """
     result = []
     element = Element()
     element.docFactory = stan(['"&<>'])
     request = FakeRequest()
     context = WovenContext()
     context.remember(request)
     finished = oldFlatten(p(foo=element), context, result.append, lambda ign: ign)
     finished.addCallback(lambda ign: "".join(result))
     finished.addCallback(self.assertEqual, '<p foo="&quot;&amp;&lt;&gt;"></p>')
     return finished
Beispiel #7
0
 def test_oldFlattenable(self):
     """
     Flattening L{Element} instances with the old flatten function results in
     the flattened version of whatever their C{render} method returns.
     """
     result = []
     element = Element()
     element.docFactory = stan(['"&<>'])
     request = FakeRequest()
     context = WovenContext()
     context.remember(request)
     finished = oldFlatten(element, context, result.append, lambda ign: ign)
     finished.addCallback(lambda ign: "".join(result))
     finished.addCallback(self.assertEqual, '"&amp;&lt;&gt;')
     return finished
 def test_oldFlattenable(self):
     """
     Flattening L{Element} instances with the old flatten function results in
     the flattened version of whatever their C{render} method returns.
     """
     result = []
     element = Element()
     element.docFactory = stan(['"&<>'])
     request = FakeRequest()
     context = WovenContext()
     context.remember(request)
     finished = oldFlatten(element, context, result.append, lambda ign: ign)
     finished.addCallback(lambda ign: "".join(result))
     finished.addCallback(self.assertEqual, '"&amp;&lt;&gt;')
     return finished
Beispiel #9
0
 def test_missingDocumentFactory(self):
     """
     Test that rendering a Element without a docFactory attribute raises
     the appropriate exception.
     """
     f = Element()
     return self.assertFailure(self._render(f), MissingDocumentFactory)
Beispiel #10
0
    def test_render(self):
        """
        L{Element.render} loads a document from the C{docFactory} attribute and
        returns it.
        """
        args = []
        preproc = object()
        class DocFactory(object):
            def load(self, ctx, preprocessors, precompile=None):
                args.append(preprocessors)
                return "result"

        element = Element()
        element.preprocessors = (preproc,)
        element.docFactory = DocFactory()
        self.assertEqual(element.render(None), "result")
        self.assertEqual(args, [(preproc,)])
Beispiel #11
0
 def test_missingRenderMethod(self):
     """
     Test that rendering a Element and using a render directive in its
     document factory fails if there is no available render method to
     satisfy that directive.
     """
     f = Element(docFactory=stan(directive('renderMethod')))
     return self.assertFailure(self._render(f), MissingRenderMethod)
Beispiel #12
0
 def test_simpleXHTMLRendering(self):
     """
     Test that a Element with a simple, static xhtml document factory
     renders correctly.
     """
     f = Element(docFactory=xmlstr("<p>Hello, world.</p>"))
     return self._render(f).addCallback(self.assertEquals,
                                        "<p>Hello, world.</p>")
Beispiel #13
0
 def test_simpleStanRendering(self):
     """
     Test that a Element with a simple, static stan document factory
     renders correctly.
     """
     f = Element(docFactory=stan(p["Hello, world."]))
     return self._render(f).addCallback(self.assertEquals,
                                        "<p>Hello, world.</p>")
 def test_missingDocumentFactory(self):
     """
     L{Element.render} raises L{MissingDocumentFactory} if the C{docFactory}
     attribute is C{None}.
     """
     element = Element()
     err = self.assertRaises(MissingDocumentFactory, element.render, None)
     self.assertIdentical(err.element, element)
 def test_missingRendererMethod(self):
     """
     When called with the name which is not associated with a render method,
     L{Element.renderer} raises L{MissingRenderMethod}.
     """
     element = Element()
     err = self.assertRaises(MissingRenderMethod, element.renderer, "foo")
     self.assertIdentical(err.element, element)
     self.assertEqual(err.renderName, "foo")
Beispiel #16
0
 def _instaString(self, x):
     """
     Convert a new-style-renderable thing into a string, raising an
     exception if any deferred rendering took place.
     """
     e = Element(docFactory=stan(x))
     l = []
     d = deferflatten(None, e, False, False, l.append)
     return ''.join(l)
Beispiel #17
0
 def test_missingDocumentFactory(self):
     """
     Test that rendering a Element without a docFactory attribute raises
     the appropriate exception.
     """
     def cb(ignored):
         # The old flattener unconditionally logs errors.
         self.flushLoggedErrors(MissingDocumentFactory)
     d = self.assertFailure(self._render(Element()), FlattenerError)
     d.addCallback(cb)
     return d
Beispiel #18
0
    def test_oldFlattenableError(self):
        """
        If the old flattener encounters an asynchronous Failure while
        flattening an L{IRenderable}, the returned L{Deferred} fires with the
        failure.
        """
        result = Deferred()
        element = Element()
        element.docFactory = stan(result)

        request = FakeRequest()
        context = WovenContext()
        context.remember(request)

        accumulator = []
        finished = oldFlatten(element, context, accumulator.append, lambda ign: ign)
        result.addErrback(lambda err: err.trap(RuntimeError))
        finished = self.assertFailure(finished, RuntimeError)
        result.errback(RuntimeError("test error"))
        return finished
Beispiel #19
0
 def test_missingRenderMethod(self):
     """
     Test that flattening an L{Element} with a C{docFactory} which has a tag
     with a render directive fails with L{FlattenerError} if there is no
     available render method to satisfy that directive.
     """
     element = Element(docFactory=stan(p(render=directive('renderMethod'))))
     def cb(ignored):
         # The old flattener unconditionally logs errors.
         self.flushLoggedErrors(MissingRenderMethod)
     d = self.assertFailure(self._render(element), FlattenerError)
     d.addCallback(cb)
     return d
 def rend(self, ctx, data):
     contexts.append(ctx)
     return Element.rend(self, ctx, data)
Beispiel #21
0
 def renderMethod(self, request, tag):
     return tag[Element(docFactory=stan("Hello, world."))]
Beispiel #22
0
 def __init__(self, dummy):
     Element.__init__(self)
     self.dummy = dummy
Beispiel #23
0
 def __init__(self, original):
     self.original = original
     Element.__init__(self)
Beispiel #24
0
 def __init__(self, dummy):
     Element.__init__(self)
     self.dummy = dummy
 def rend(self, ctx, data):
     return invisible(render=directive("foo"))[Element.rend(
         self, ctx, data)]
Beispiel #26
0
 def rend(self, ctx, data):
     return invisible(render=directive("foo"))[Element.rend(self, ctx, data)]
Beispiel #27
0
 def rend(self, ctx, data):
     contexts.append(ctx)
     return Element.rend(self, ctx, data)
 def test_renderable(self):
     """
     L{Element} implements L{IRenderable}.
     """
     self.assertTrue(verifyObject(IRenderable, Element()))
Beispiel #29
0
 def __init__(self, original):
     self.original = original
     Element.__init__(self)