[Zope-Checkins] SVN: Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/test_WSGIPublisher.py Tidy up / normalize test for publish_module before writing more of them.

Tres Seaver tseaver at palladion.com
Mon May 31 13:27:45 EDT 2010


Log message for revision 112874:
  Tidy up / normalize test for publish_module before writing more of them.

Changed:
  U   Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/test_WSGIPublisher.py

-=-
Modified: Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/test_WSGIPublisher.py
===================================================================
--- Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/test_WSGIPublisher.py	2010-05-31 08:46:39 UTC (rev 112873)
+++ Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/test_WSGIPublisher.py	2010-05-31 17:27:45 UTC (rev 112874)
@@ -154,89 +154,81 @@
         self.assertRaises(NotImplementedError, lambda: str(response))
 
 
-def noopStartResponse(status, headers):
-    pass
-
-
-class WSGIPublisherTests(unittest.TestCase):
-    _dummy_interface = None
+class Test_publish_module(unittest.TestCase):
     
     def setUp(self):
         from zope.testing.cleanup import cleanUp
 
         cleanUp()
-        self._registerAdapters()
 
-    def _dummyInterface(self):
-        from zope.interface import Interface
-        if self._dummy_interface is not None:
-            return self._dummy_interface
+    def tearDown(self):
+        from zope.testing.cleanup import cleanUp
+        cleanUp()
 
-        class IDummy(Interface):
-            """IDummy"""
+    def _callFUT(self, environ, start_response):
+        from ZPublisher.WSGIPublisher import publish_module
+        return publish_module(environ, start_response)
 
-        self._dummy_interface = IDummy
-        return IDummy
-
-    def _registerAdapters(self):
-        from Acquisition import Implicit
-        from zope.component import getGlobalSiteManager
+    def _registerView(self, factory, name, provides=None):
+        from zope.component import provideAdapter
         from zope.interface import Interface
-        from zope.publisher.browser import BrowserPage
         from zope.publisher.browser import IDefaultBrowserLayer
-        from zope.traversing.interfaces import ITraversable
-        from zope.traversing.namespace import view
         from OFS.interfaces import IApplication
+        if provides is None:
+            provides = Interface
+        requires = (IApplication, IDefaultBrowserLayer)
+        provideAdapter(factory, requires, provides, name)
 
-        gsm = getGlobalSiteManager()
-
-        IDummy = self._dummyInterface()
-
-        class TestPage(BrowserPage):
-            __name__ = 'testing'
-            def __call__(self):
-                return 'foobar'
-
-        # Define the views
-        gsm.registerAdapter(TestPage, (IApplication, IDefaultBrowserLayer),
-                            Interface, 'testing')
-
-        # Bind the 'view' namespace (for @@ traversal)
-        gsm.registerAdapter(view,
-                            (IApplication, IDefaultBrowserLayer),
-                            ITraversable, 'view')
-
-    def test_publish_module_uses_setDefaultSkin(self):
+    def _makeEnviron(self, **kw):
         from StringIO import StringIO
-                        
-        self._registerAdapters()
         environ = {
             'SCRIPT_NAME' : '',
-            'PATH_INFO' : '/@@testing',
             'REQUEST_METHOD' : 'GET',
             'QUERY_STRING' : '',
             'SERVER_NAME' : '127.0.0.1',
             'REMOTE_ADDR': '127.0.0.1', 
             'wsgi.url_scheme': 'http', 
-            'SERVER_PORT': '80', 
-            'HTTP_HOST': '127.0.0.1:80', 
+            'SERVER_PORT': '8080', 
+            'HTTP_HOST': '127.0.0.1:8080', 
             'SERVER_PROTOCOL' : 'HTTP/1.1',
             'wsgi.input' : StringIO(''),
             'CONTENT_LENGTH': '0',
             'HTTP_CONNECTION': 'keep-alive',
             'CONTENT_TYPE': ''
         }
-        
-        from ZPublisher.WSGIPublisher import publish_module
-        self.failUnless(publish_module(environ, noopStartResponse) == ('', 'foobar'))
+        environ.update(kw)
+        return environ
+
+    def test_publish_module_uses_setDefaultSkin(self):
+        from zope.traversing.interfaces import ITraversable
+        from zope.traversing.namespace import view
+
+        class TestView:
+            __name__ = 'testing'
+
+            def __init__(self, context, request):
+                pass
+
+            def __call__(self):
+                return 'foobar'
+
+        # Define the views
+        self._registerView(TestView, 'testing')
+
+        # Bind the 'view' namespace (for @@ traversal)
+        self._registerView(view, 'view', ITraversable)
+
+        environ = self._makeEnviron(PATH_INFO='/@@testing')
+        self.assertEqual(self._callFUT(environ, noopStartResponse),
+                         ('', 'foobar'))
     
 
-def test_suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(WSGIResponseTests, 'test'))
-    suite.addTest(unittest.makeSuite(WSGIPublisherTests, 'test'))
-    return suite
+def noopStartResponse(status, headers):
+    pass
 
-if __name__ == '__main__':
-    unittest.main(defaultTest='test_suite')
-    
\ No newline at end of file
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(WSGIResponseTests, 'test'),
+        unittest.makeSuite(Test_publish_module, 'test'),
+    ))



More information about the Zope-Checkins mailing list