[Checkins] SVN: z3c.jbot/trunk/z3c/jbot/ Test Five-support in a unit test; we don't need to tell the same (tired) story again.
Malthe Borch
mborch at gmail.com
Mon Feb 8 06:56:46 EST 2010
Log message for revision 108871:
Test Five-support in a unit test; we don't need to tell the same (tired) story again.
Changed:
D z3c.jbot/trunk/z3c/jbot/Five.txt
U z3c.jbot/trunk/z3c/jbot/tests/test_doctests.py
A z3c.jbot/trunk/z3c/jbot/tests/test_five.py
-=-
Deleted: z3c.jbot/trunk/z3c/jbot/Five.txt
===================================================================
--- z3c.jbot/trunk/z3c/jbot/Five.txt 2010-02-08 11:56:13 UTC (rev 108870)
+++ z3c.jbot/trunk/z3c/jbot/Five.txt 2010-02-08 11:56:45 UTC (rev 108871)
@@ -1,104 +0,0 @@
-Five compatibility tests
-========================
-
-Let's instantiate a Five page template.
-
- >>> from Products.Five.browser.pagetemplatefile import ZopeTwoPageTemplateFile
-
- >>> import z3c.jbot.tests
- >>> directory = z3c.jbot.tests.__path__[0] + "/templates"
-
-To play nicely we'll put the template inside a view.
-
- >>> from Products.Five.browser import BrowserView
- >>> class MockView(BrowserView):
- ... template = ZopeTwoPageTemplateFile("example.pt", _prefix=directory)
-
-Let's instantiate the view with a test request.
-
- >>> from zope.publisher.browser import TestRequest
- >>> request = TestRequest("en")
- >>> view = MockView(None, request)
-
-Verify that the original template is rendered.
-
- >>> view.template()
- u'This is an example page template.\n'
-
-Register template overrides directory.
-
- >>> import z3c.jbot.manager
- >>> import z3c.jbot.interfaces
-
- >>> factory = z3c.jbot.manager.TemplateManagerFactory('z3c.jbot.tests.templates')
- >>> component.provideAdapter(
- ... factory, (interface.Interface,), z3c.jbot.interfaces.ITemplateManager)
-
- >>> manager = factory.manager
- >>> manager.registerDirectory(directory)
-
-Verify that the override is rendered.
-
- >>> view.template()
- u'This template will override the example template.\n'
-
- >>> manager.unregisterDirectory(directory)
-
-Register override for HTTP-request layer.
-
- >>> from zope.publisher.interfaces.browser import IHTTPRequest
- >>> factory = z3c.jbot.manager.TemplateManagerFactory('z3c.jbot.tests.templates')
- >>> component.provideAdapter(
- ... factory, (IHTTPRequest,),
- ... z3c.jbot.interfaces.ITemplateManager, name='http')
-
- >>> manager = factory.manager
- >>> manager.registerDirectory(directory)
-
- >>> view.template()
- u'This is an example page template.\n'
-
-On Zope 2, the request is acquired from the site as set by the
-component site hook.
-
- >>> from zope.publisher.browser import TestRequest
- >>> class MockSite(object):
- ... REQUEST = TestRequest()
- ... getSiteManager = component.getSiteManager
-
- >>> from zope.app.component.hooks import setHooks, setSite
- >>> setHooks()
- >>> setSite(MockSite())
-
-Examine the request.
-
- >>> import z3c.jbot.utility
- >>> z3c.jbot.utility.getRequest()
- <zope.publisher.browser.TestRequest ...>
-
- >>> managers = tuple(z3c.jbot.utility.getManagers())
- >>> len(managers)
- 2
-
-Verify that template attributes are set per request layer.
-
- >>> view.template._v_last_read is not False
- True
-
- >>> class ISpecificLayer(interface.Interface):
- ... pass
-
- >>> interface.alsoProvides(MockSite.REQUEST, ISpecificLayer)
- >>> view.template._v_last_read = False
- >>> view.template._v_last_read is False
- True
-
-No longer providing this layer, we expect an attribute lookup to
-return the value that was set before the layer was provided.
-
- >>> interface.noLongerProvides(MockSite.REQUEST, ISpecificLayer)
- >>> view.template._v_cache.layer = z3c.jbot.utility.getLayer()
- >>> view.template._v_last_read is not False
- True
-
-
Modified: z3c.jbot/trunk/z3c/jbot/tests/test_doctests.py
===================================================================
--- z3c.jbot/trunk/z3c/jbot/tests/test_doctests.py 2010-02-08 11:56:13 UTC (rev 108870)
+++ z3c.jbot/trunk/z3c/jbot/tests/test_doctests.py 2010-02-08 11:56:45 UTC (rev 108871)
@@ -9,24 +9,18 @@
import zope.component.testing
def test_suite():
- doctests = ['README.txt']
globs = dict(
interface=zope.interface,
component=zope.component)
-
- try:
- import Products.Five
- doctests.append('Five.txt')
- except:
- pass
-
+
return unittest.TestSuite((
- zope.testing.doctest.DocFileSuite(doctest,
- optionflags=OPTIONFLAGS,
- setUp=zope.component.testing.setUp,
- tearDown=zope.component.testing.tearDown,
- globs=globs,
- package="z3c.jbot") for doctest in doctests
+ zope.testing.doctest.DocFileSuite(
+ 'README.txt',
+ optionflags=OPTIONFLAGS,
+ setUp=zope.component.testing.setUp,
+ tearDown=zope.component.testing.tearDown,
+ globs=globs,
+ package="z3c.jbot"),
))
if __name__ == '__main__':
Added: z3c.jbot/trunk/z3c/jbot/tests/test_five.py
===================================================================
--- z3c.jbot/trunk/z3c/jbot/tests/test_five.py (rev 0)
+++ z3c.jbot/trunk/z3c/jbot/tests/test_five.py 2010-02-08 11:56:45 UTC (rev 108871)
@@ -0,0 +1,85 @@
+import unittest
+
+class FiveTests(unittest.TestCase):
+ def setUp(self):
+ import zope.component.testing
+ zope.component.testing.setUp(self)
+
+ from Products.Five.browser.pagetemplatefile import \
+ ZopeTwoPageTemplateFile as Template
+
+ from Products.Five.browser import BrowserView
+ class MockView(BrowserView):
+ template = Template(
+ "templates/example.pt")
+ interface_override = Template(
+ "overrides/interface/z3c.jbot.tests.templates.example.pt")
+ http_override = Template(
+ "overrides/http/z3c.jbot.tests.templates.example.pt")
+ https_override = Template(
+ "overrides/https/z3c.jbot.tests.templates.example.pt")
+
+ # set up mock site and request
+ from zope.publisher.browser import TestRequest
+ class MockSite(object):
+ REQUEST = TestRequest("en")
+ getSiteManager = zope.component.getSiteManager
+ from zope.app.component.hooks import setHooks, setSite
+ setHooks()
+ setSite(MockSite())
+ self._request = MockSite.REQUEST
+
+ # render templates for later comparison
+ view = self._view = MockView(None, MockSite.REQUEST)
+ self._original = view.template()
+ self._interface_override = view.interface_override()
+ self._http_override = view.http_override()
+ self._https_override = view.https_override()
+
+ import z3c.jbot.tests
+ self._tests = z3c.jbot.tests.__path__[0]
+
+ def tearDown(self):
+ import zope.component.testing
+ zope.component.testing.tearDown(self)
+
+ def test_override_for_interface(self):
+ from z3c.jbot.metaconfigure import handler
+ from zope import interface
+ manager = handler(
+ "%s/overrides/interface" % self._tests, interface.Interface)
+ self.assertEqual(self._view.template(), self._interface_override)
+
+ def test_override_for_httprequest(self):
+ from z3c.jbot.metaconfigure import handler
+ from zope import interface
+ from zope.publisher.interfaces.browser import IHTTPRequest
+
+ class IHTTPSRequest(IHTTPRequest):
+ pass
+
+ # register handlers
+ general = handler(
+ "%s/overrides/interface" % self._tests, interface.Interface)
+ http = handler(
+ "%s/overrides/https" % self._tests, IHTTPSRequest)
+
+ # we get the general override
+ self.assertEqual(self._view.template(), self._interface_override)
+
+ # provide the http layer
+ from zope.interface import alsoProvides
+ alsoProvides(self._request, IHTTPSRequest)
+ self.assertEqual(self._view.template(), self._https_override)
+
+ # revert to general override
+ from zope.interface import noLongerProvides
+ noLongerProvides(self._request, IHTTPSRequest)
+ self.assertEqual(self._view.template(), self._interface_override)
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(FiveTests),))
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
More information about the checkins
mailing list