def test_layout_simple_chain_multi_level(self): class View(view.View): def render(self): return "View: test" class LayoutTest(view.Layout): def render(self, content): return "<div>%s</div>" % content class LayoutPage(view.Layout): def render(self, content): return "<html>%s</html>" % content view.register_layout("", klass=LayoutPage, context=Root, parent=None) view.register_layout("test", klass=LayoutTest, parent=".") self._init_ptah() root = Root() context = Context(root) v = View(context, self.request) renderer = SimpleRenderer("test") res = renderer(context, self.request, viewMapper(View, "render")) self.assertTrue("<html><div>View: test</div></html>" in res.body) layout = query_layout(self.request, v.context, "test") self.assertTrue(isinstance(layout, LayoutTest)) rootlayout = query_layout(self.request, context, "") self.assertTrue(isinstance(rootlayout, LayoutPage)) rootlayout = query_layout(self.request, root, "") self.assertTrue(isinstance(rootlayout, LayoutPage))
def test_layout_simple_chain_multi_level(self): class LayoutTest(view.Layout): def render(self, content): return '<div>%s</div>'%content class LayoutPage(view.Layout): def render(self, content): return '<html>%s</html>'%content view.register_layout('', klass=LayoutPage, context=Root, parent=None) view.register_layout('test', klass=LayoutTest, parent='.') self._init_ptah() root = Root() context = Context(root) renderer = LayoutRenderer('test') res = renderer(context, self.request, 'View: test') self.assertTrue('<html><div>View: test</div></html>' in res) layout = query_layout(context, self.request, 'test') self.assertTrue(isinstance(layout, LayoutTest)) rootlayout = query_layout(context, self.request, '') self.assertTrue(isinstance(rootlayout, LayoutPage)) rootlayout = query_layout(root, self.request, '') self.assertTrue(isinstance(rootlayout, LayoutPage))
def test_layout_for_route(self): view.register_route("test-route", "/test/", use_global_views=True) view.register_layout("test", route="test-route") self._init_ptah() layout = query_layout(self.request, Context(), "test") self.assertIsNone(layout) request_iface = config.registry.getUtility(IRouteRequest, name="test-route") interface.directlyProvides(self.request, request_iface) layout = query_layout(self.request, Context(), "test") self.assertIsNotNone(layout)
def test_layout_for_route(self): view.register_route('test-route', '/test/', use_global_views=True) view.register_layout('test', route = 'test-route') self._init_ptah() layout = query_layout(Context(), self.request, 'test') self.assertIsNone(layout) request_iface = config.registry.getUtility( IRouteRequest, name='test-route') interface.directlyProvides(self.request, request_iface) layout = query_layout(Context(), self.request, 'test') self.assertIsNotNone(layout)
def test_layout_simple_view_without_template(self): class View(view.View): def render(self): return 'test' view.register_layout('test') self._init_ptah() v = View(Context(), self.request) layout = query_layout(v.context, self.request, 'test') layout.update() self.assertTrue('test' == layout.render(v.render()))
def test_layout_simple_multilevel(self): class Layout(view.Layout): def render(self, content): return '<html>%s</html>'%content view.register_layout('', klass=Layout, context=Root) self._init_ptah() root = Root() context = Context(root) # find layout for view layout = query_layout(context, self.request, '') self.assertTrue(isinstance(layout, Layout)) renderer = LayoutRenderer('') res = renderer(context, self.request, 'View: test') self.assertTrue('<html>View: test</html>' in res)
def test_layout_simple_view(self): class View(view.View): def __call__(self): return 'View: test' class Layout(view.Layout): def render(self, rendered): return '<html>%s</html>'%rendered view.register_layout('test', klass=Layout) self._init_ptah() v = View(Context(), self.request) # find layout for view layout = query_layout(v.context, self.request, 'test') self.assertTrue(isinstance(layout, Layout)) layout.update() self.assertEqual(layout.render(v()), '<html>View: test</html>')
def test_layout_simple_declarative(self): global Layout class View(view.View): def __call__(self): return 'View: test' class Layout(view.Layout): view.layout('test', context=Context) def render(self, rendered): return '<html>%s</html>'%rendered self._init_ptah() v = View(Context(), self.request) layout = query_layout(v.context, self.request, 'test') self.assertTrue(isinstance(layout, Layout)) layout.update() self.assertEqual(layout.render(v()), '<html>View: test</html>')
def test_layout_simple_context(self): class View(view.View): layout = "test" def render(self): return "View: test" class Layout(view.Layout): def render(self, content): return "<html>%s</html>" % content view.register_layout("test", klass=Layout, context=Context) self._init_ptah() v = View(Context(), self.request) # find layout for view layout = query_layout(self.request, v.context, "test") self.assertTrue(isinstance(layout, Layout)) layout.update() self.assertEqual(layout.render(v.render()), "<html>View: test</html>")
def test_layout_simple_multilevel(self): class View(view.View): def __call__(self): return "View: test" class Layout(view.Layout): def render(self, content): return "<html>%s</html>" % content view.register_layout("", klass=Layout, context=Root) self._init_ptah() root = Root() context = Context(root) v = View(context, self.request) # find layout for view layout = query_layout(self.request, context, "") self.assertTrue(isinstance(layout, Layout)) renderer = SimpleRenderer(layout="") res = renderer(context, self.request, viewMapper(View)) self.assertTrue("<html>View: test</html>" in res.body)
def test_layout_simple_notfound(self): v = view.View(Context(Context()), self.request) layout = query_layout(v.context, self.request, 'test') self.assertTrue(layout is None)