[Repoze-dev] Repoze CVS: test_publisher.py

Tres Seaver tseaver at agendaless.com
Wed Sep 12 20:20:27 UTC 2007


Update of /home/repoze/cvs/repoze.obob/repoze/obob/tests
In directory laguna.palladion.com:/tmp/cvs-serv16762/repoze/obob/tests

Modified Files:
	test_publisher.py 
Log Message:
 - Break multiple plugpoints out into a separate helper class, configured
   through new 'helper_factory' plugpoing on ObobPublisher.

 - Remove use of 'request' anywhere (the helper is responsible for all that).

 - Move old default plugpoint implementations out into DefaultHelper class.


Index: test_publisher.py
===================================================================
RCS file: /home/repoze/cvs/repoze.obob/repoze/obob/tests/test_publisher.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- test_publisher.py	12 Sep 2007 18:23:35 -0000	1.5
+++ test_publisher.py	12 Sep 2007 20:20:25 -0000	1.6
@@ -1,106 +1,38 @@
 import unittest
 
-class ObobPublisherTests(unittest.TestCase):
+class DefaultHelperTests(unittest.TestCase):
 
     def _getTargetClass(self):
-        from repoze.obob.publisher import ObobPublisher
-        return ObobPublisher
-
-    def _makeOne(self, *args, **kw):
-        return self._getTargetClass()(*args, **kw)
-
-    def test_ctor_defaults(self):
-
-        from repoze.obob.publisher import PLUGPOINTS
-        obob = self._makeOne()
-
-        klass = self._getTargetClass()
-        for plugpoint in PLUGPOINTS:
-            from_instance = getattr(obob, plugpoint).im_func
-            from_class = getattr(klass, plugpoint).im_func
-
-            self.failUnless(from_instance is from_class)
-
-    def test_ctor_overrides(self):
-
-        def _rf(environ): pass
-        def _gr(request): pass
-        def _bt(current, name, request): pass
-        def _t(current, name): pass
-        def _bi(published, request): pass
-        def _i(published, request): pass
-        def _mr(request, result): pass
-
-        obob = self._makeOne(request_factory=_rf,
-                             get_root=_gr,
-                             before_traverse=_bt,
-                             traverse =_t,
-                             before_invoke=_bi,
-                             invoke=_i,
-                             map_result=_mr,
-                            )
-
-        self.failUnless(obob.get_root is _gr)
-        self.failUnless(obob.request_factory is _rf)
-        self.failUnless(obob.before_traverse is _bt)
-        self.failUnless(obob.traverse is _t)
-        self.failUnless(obob.before_invoke is _bi)
-        self.failUnless(obob.invoke is _i)
-        self.failUnless(obob.map_result is _mr)
-
-    def test_ctor_get_root_not_callable_raises(self):
-        self.assertRaises(ValueError, self._makeOne,
-                                      get_root=object())
-
-    def test_ctor_before_traverse_not_callable_raises(self):
-        self.assertRaises(ValueError, self._makeOne,
-                                      before_traverse=object())
-
-    def test_ctor_traverse_not_callable_raises(self):
-        self.assertRaises(ValueError, self._makeOne,
-                                      traverse=object())
-
-    def test_ctor_before_traverse_not_callable_raises(self):
-        self.assertRaises(ValueError, self._makeOne,
-                                      before_invoke=object())
-
-    def test_ctor_invoke_not_callable_raises(self):
-        self.assertRaises(ValueError, self._makeOne,
-                                      invoke=object())
+        from repoze.obob.publisher import DefaultHelper
+        return DefaultHelper
 
-    def test_ctor_map_result_not_callable_raises(self):
-        self.assertRaises(ValueError, self._makeOne,
-                                      map_result=object())
+    def _makeOne(self, environ=None):
+        if environ is None:
+            environ = {}
+        return self._getTargetClass()(environ)
 
-    def test_request_factory_default(self):
-        obob = self._makeOne()
-        environ = object()
-        self.failUnless(obob.request_factory(environ) is environ)
+    def test_path_elements_root(self):
+        helper = self._makeOne({'PATH_INFO': '/'})
+        self.assertEqual(len(helper.path_elements()), 0)
 
-    def test_get_root_default_nonempty(self):
-        def _baz():
-            return 'BAZ'
-        dispatchable = {'baz': _baz }
-        extras = {'foo': 'bar'}
-        obob = self._makeOne(dispatchable=dispatchable, extras=extras)
-        request = object()
-        root = obob.get_root(request)
-        self.assertEqual(root.keys(), {'baz': 1}.keys())
-        self.assertEqual(root['baz'], _baz)
-        self.assertEqual(obob.extras, {'foo': 'bar'})
+    def test_path_elements_nonroot(self):
+        helper = self._makeOne({'PATH_INFO': '/simple'})
+        self.assertEqual(len(helper.path_elements()), 1)
+        self.assertEqual(helper.path_elements()[0], 'simple')
 
-    def test_get_root_default_empty(self):
-        obob = self._makeOne()
-        request = object()
-        self.assertEqual(obob.get_root(request).keys(), {}.keys())
+    def test_path_elements_nonroot_with_empty(self):
+        helper = self._makeOne({'PATH_INFO': '/one//two'})
+        self.assertEqual(len(helper.path_elements()), 2)
+        self.assertEqual(helper.path_elements()[0], 'one')
+        self.assertEqual(helper.path_elements()[1], 'two')
 
     def test_traverse_default(self):
-        obob = self._makeOne()
+        helper = self._makeOne()
         d = {'key': 'value'}
-        self.assertEqual(obob.traverse(d, 'key'), 'value')
+        self.assertEqual(helper.traverse(d, 'key'), 'value')
 
     def test_invoke_default(self):
-        obob = self._makeOne()
+        helper = self._makeOne()
         called_with = []
         request = object()
         RESULT = object()
@@ -108,7 +40,7 @@
             called_with.append((args, kw))
             return RESULT
 
-        result = obob.invoke(_published, request)
+        result = helper.invoke(_published)
 
         self.assertEqual(len(called_with), 1)
         self.assertEqual(called_with[0][0], ())
@@ -116,23 +48,70 @@
         self.failUnless(result is RESULT)
 
     def test_map_result_default_result_is_string(self):
-        obob = self._makeOne()
+        helper = self._makeOne()
         request = object()
         result = '<html/>'
 
-        status, headers, body_iter = obob.map_result(request, result)
+        status, headers, body_iter = helper.map_result(result)
 
         self.assertEqual(status, '200 OK')
         self.assertEqual(headers, {})
         self.assertEqual(body_iter, [result])
 
     def test_map_result_default_result_not_string(self):
-        obob = self._makeOne()
+        helper = self._makeOne()
         request = object()
         result = object()
 
-        status, headers, body_iter = obob.map_result(request, result)
+        status, headers, body_iter = helper.map_result(result)
 
         self.assertEqual(status, '200 OK')
         self.assertEqual(headers, {})
         self.assertEqual(body_iter, result)
+
+class ObobPublisherTests(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from repoze.obob.publisher import ObobPublisher
+        return ObobPublisher
+
+    def _makeOne(self, *args, **kw):
+        return self._getTargetClass()(*args, **kw)
+
+    def test_ctor_defaults(self):
+        from repoze.obob.publisher import _PLUGPOINTS
+
+        obob = self._makeOne()
+        klass = self._getTargetClass()
+
+        for plugpoint in _PLUGPOINTS:
+            from_instance = getattr(obob, plugpoint).im_func
+            from_class = getattr(klass, plugpoint).im_func
+            self.failUnless(from_instance is from_class)
+
+    def test_ctor_overrides(self):
+
+        def _gr(request): pass
+        def _hf(): pass
+
+        obob = self._makeOne(get_root=_gr, helper_factory=_hf)
+
+        self.failUnless(obob.get_root is _gr)
+        self.failUnless(obob.helper_factory is _hf)
+
+    def test_get_root_default_nonempty(self):
+        def _baz():
+            return 'BAZ'
+        dispatchable = {'baz': _baz }
+        extras = {'foo': 'bar'}
+        obob = self._makeOne(dispatchable=dispatchable, extras=extras)
+        request = object()
+        root = obob.get_root(request)
+        self.assertEqual(root.keys(), {'baz': 1}.keys())
+        self.assertEqual(root['baz'], _baz)
+        self.assertEqual(obob.extras, {'foo': 'bar'})
+
+    def test_get_root_default_empty(self):
+        obob = self._makeOne()
+        request = object()
+        self.assertEqual(obob.get_root(request).keys(), {}.keys())

_______________________________________________
Repoze-dev mailing list
Repoze-dev at lists.repoze.org
http://lists.repoze.org/mailman/listinfo/repoze-dev



More information about the Repoze-dev mailing list