[Repoze-checkins] r725 - repoze.zope2/trunk/repoze/zope2/tests

Chris McDonough chrism at agendaless.com
Sat Feb 23 01:02:17 UTC 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Fri Feb 22 20:02:16 2008
New Revision: 725

Log:
Implement missing tests.


Modified:
   repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py

Modified: repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py	(original)
+++ repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py	Fri Feb 22 20:02:16 2008
@@ -300,16 +300,93 @@
         self.assertEqual(result, published)
         self.assertEqual(published.ofed, True)
 
-    # XXX need more traverse tests
-    # - check URLs are reset
-    # - check 'traversed' is fixed up
-    # - check 'request.roles' is set
-    # _getPublishTraverseView variants:
-    # - when ob implements IPublishTraverse
-    # - when queryMultiAdapter against ((ob, request), IPublishTraverse) doesn't
-    #   return None
+    def test_traverse_sets_request_roles(self):
+        published = DummyGetitemPublishedObject()
+        foo = DummyPublishedObject()
+        foo.__doc__ = 'hello'
+        foo.__roles__ = ('a', 'b', 'c')
+        published.subs['foo'] = foo
+        published.__allow_groups__ = object()
+        helper = self._makeOne()
+        helper.user_folders = []
+        helper.request.steps = []
+        helper.traverse(published, 'foo')
+        self.assertEqual(helper.request.roles, ('a', 'b', 'c'))
 
+    def test_traverse_traversed_fixed(self):
+        published = DummyGetitemPublishedObject()
+        foo = DummyPublishedObject()
+        foo.__doc__ = 'hello'
+        published.subs['foo'] = foo
+        published.__allow_groups__ = object()
+        helper = self._makeOne()
+        helper.user_folders = []
+        helper.request.steps = []
+        helper.traverse(published, 'foo')
+        self.assertEqual(helper.traversed, ['foo'])
 
+    def test_traverse_urls_reset(self):
+        published = DummyGetitemPublishedObject()
+        foo = DummyPublishedObject()
+        foo.__doc__ = 'hello'
+        published.subs['foo'] = foo
+        published.__allow_groups__ = object()
+        helper = self._makeOne()
+        helper.user_folders = []
+        helper.request.steps = []
+        x = []
+        helper.request._resetURLS = lambda *arg: x.append(1)
+        helper.traverse(published, 'foo')
+        self.assertEqual(x, [1])
+
+    def test_traverse_ob_has_IPublishTraverse_multiadapter(self):
+        from zope.publisher.interfaces import IPublishTraverse
+        from zope.interface import implements
+        x = []
+        class DummyPublishTraverse:
+            implements(IPublishTraverse)
+            def __init__(self, context, request):
+                pass
+            def publishTraverse(self, request, name):
+                x.append(request)
+                x.append(name)
+        published = DummyGetitemPublishedObject()
+        ztapi.browserViewProviding(None, DummyPublishTraverse,
+                                   layer=None,
+                                   providing=IPublishTraverse)
+        foo = DummyPublishedObject()
+        foo.__doc__ = 'hello'
+        published.subs['foo'] = foo
+        published.__allow_groups__ = object()
+        helper = self._makeOne()
+        helper.user_folders = []
+        helper.request.steps = []
+        x = []
+        helper.traverse(published, 'foo')
+        self.assertEqual(len(x), 2)
+        self.assertEqual(x[0], helper.request)
+        self.assertEqual(x[1], 'foo')
+
+    def test_traverse_ob_implements_IPublishTraverser(self):
+        from zope.publisher.interfaces import IPublishTraverse
+        from zope.interface import directlyProvides
+        published = DummyGetitemPublishedObject()
+        foo = DummyPublishedObject()
+        directlyProvides(published, IPublishTraverse)
+        x = []
+        published.publishTraverse = lambda *args: x.append(args)
+        foo.__doc__ = 'hello'
+        published.subs['foo'] = foo
+        published.__allow_groups__ = object()
+        helper = self._makeOne()
+        helper.user_folders = []
+        helper.request.steps = []
+        helper.traverse(published, 'foo')
+        self.assertEqual(len(x), 1)
+        xrequest, xname = x[0]
+        self.assertEqual(xrequest, helper.request)
+        self.assertEqual(xname, 'foo')
+        
     def test_before_invoke_simple(self):
         published = DummyPublishedObject()
         helper = self._makeOne()


More information about the Repoze-checkins mailing list