[Checkins] SVN: megrok.menu/trunk/src/megrok/menu/tests/test_order.py Added tests to check the new order mechanism

Souheil CHELFOUH souheil at chelfouh.com
Mon Nov 2 07:43:11 EST 2009


Log message for revision 105440:
  Added tests to check the new order mechanism
  

Changed:
  A   megrok.menu/trunk/src/megrok/menu/tests/test_order.py

-=-
Added: megrok.menu/trunk/src/megrok/menu/tests/test_order.py
===================================================================
--- megrok.menu/trunk/src/megrok/menu/tests/test_order.py	                        (rev 0)
+++ megrok.menu/trunk/src/megrok/menu/tests/test_order.py	2009-11-02 12:43:10 UTC (rev 105440)
@@ -0,0 +1,105 @@
+"""
+  >>> from zope.component import getUtility
+  >>> from zope.app.publisher.interfaces.browser import IBrowserMenu
+  >>> from zope.publisher.browser import TestRequest
+
+A menu is available as a named utility providing ``IBrowserMenu``.
+
+  >>> menu = getUtility(IBrowserMenu, 'ordered')
+  >>> manfred = Mammoth()
+  >>> request = TestRequest()
+
+In order to retrieve the menu items, we need to pass in a context
+object and a request.  The menu then determines which menu items are
+available for this particular object and the principal that's attached
+to the request:
+
+  >>> from pprint import pprint
+  >>> pprint(menu.getMenuItems(manfred, request))
+  [{'action': 'cluelessview',
+    'description': "We keep the 'menuitem' directive order info if present !",
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'What should I chose ?'},
+   {'action': 'firstview',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'my first view'},
+   {'action': 'secondview',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'my second view'},
+   {'action': 'thirdview',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'my third view'}]
+
+"""
+
+import megrok.menu
+import grokcore.viewlet as grok
+
+
+class Mammoth(grok.Context):
+    pass
+
+
+class OrderedMenu(megrok.menu.Menu):
+    grok.name('ordered')
+    grok.title('My menu')
+
+
+class SecondView(grok.View):
+    grok.order(2)
+    grok.title('my second view')
+    megrok.menu.menuitem('ordered')
+
+    def render(self):
+        return 'test'
+
+
+class ThirdView(grok.View):
+    grok.title('my third view')
+    megrok.menu.menuitem('ordered', order=3)
+
+    def render(self):
+        return 'test'
+
+
+class FirstView(grok.View):
+    grok.order(1)
+    grok.title('my first view')
+    megrok.menu.menuitem('ordered')
+
+    def render(self):
+        return 'test'
+
+
+class CluelessView(grok.View):
+    grok.order(5)
+    grok.title('What should I chose ?')
+    grok.description("We keep the 'menuitem' directive "
+                     "order info if present !")
+    megrok.menu.menuitem('ordered', order=0)
+
+    def render(self):
+        return 'test'
+    
+
+def test_suite():
+    from zope.testing import doctest
+    from megrok.menu.tests import FunctionalLayer
+    suite = doctest.DocTestSuite()
+    suite.layer = FunctionalLayer
+    return suite



More information about the checkins mailing list