[Checkins] SVN: megrok.layout/trunk/src/megrok/layout/ftests/test_specializedlayout.py Added a Test for inherhitance layout

Souheil CHELFOUH souheil at chelfouh.com
Mon Oct 18 05:57:58 EDT 2010


Log message for revision 117647:
  Added a Test for inherhitance layout

Changed:
  A   megrok.layout/trunk/src/megrok/layout/ftests/test_specializedlayout.py

-=-
Added: megrok.layout/trunk/src/megrok/layout/ftests/test_specializedlayout.py
===================================================================
--- megrok.layout/trunk/src/megrok/layout/ftests/test_specializedlayout.py	                        (rev 0)
+++ megrok.layout/trunk/src/megrok/layout/ftests/test_specializedlayout.py	2010-10-18 09:57:58 UTC (rev 117647)
@@ -0,0 +1,103 @@
+"""
+  >>> from zope.app.testing.functional import getRootFolder
+  >>> getRootFolder()["one"] = One()
+  >>> getRootFolder()["two"] = Two()
+  >>> from zope.testbrowser.testing import Browser
+  >>> browser = Browser()
+  >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+  >>> browser.handleErrors = False 
+  
+  >>> browser.open("http://localhost/++skin++askin/one/@@myview") 
+  >>> print browser.contents
+  <div> Layout A for context One </div>
+
+  >>> browser.open("http://localhost/++skin++askin/two/@@myview") 
+  >>> print browser.contents
+  <div> Layout A for context Two </div>
+
+  >>> browser.open("http://localhost/++skin++bskin/one/@@myview") 
+  >>> print browser.contents
+  <div> Layout B for context One </div>
+
+  >>> browser.open("http://localhost/++skin++bskin/two/@@myview") 
+  >>> print browser.contents
+  <div> Layout B for context Two </div>
+"""
+
+import grokcore.view as grok
+from grokcore.view import layer, skin
+
+from zope import interface
+from megrok.layout import Layout, Page 
+
+from grokcore.view import IDefaultBrowserLayer
+
+class IALayer(IDefaultBrowserLayer):
+    pass
+
+
+class IBLayer(IALayer):
+    pass
+
+
+class ASkin(IALayer):
+    skin('askin')
+
+
+class BSkin(IBLayer):
+    skin('bskin')
+
+
+class One(grok.Context):
+    pass
+
+
+class Two(One):
+    pass
+
+
+class AOneLayout(Layout):
+    grok.context(One)
+    grok.layer(IALayer)
+
+    def render(self):
+	return "<div> Layout A for context One </div>"
+
+class ATwoLayout(Layout):
+    grok.context(Two)
+    grok.layer(IALayer)
+
+    def render(self):
+	return "<div> Layout A for context Two </div>"
+
+class BOneLayout(Layout):
+    grok.context(One)
+    grok.layer(IBLayer)
+
+    def render(self):
+	return "<div> Layout B for context One </div>"
+
+class BTwoLayout(Layout):
+    grok.context(Two)
+    grok.layer(IBLayer)
+
+    def render(self):
+	return "<div> Layout B for context Two </div>"
+
+
+class MyView(Page):
+    grok.context(interface.Interface)
+    grok.layer(IALayer)
+
+    def render(self):
+        return "MyView on IALayouer"
+
+
+def test_suite():
+    from zope.testing import doctest
+    from megrok.layout.ftests import FunctionalLayer
+    suite = doctest.DocTestSuite(
+        optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS
+        )
+    suite.layer = FunctionalLayer
+    return suite  



More information about the checkins mailing list