Skip to content

Commit

Permalink
Test Five-support in a unit test; we don't need to tell the same (tir…
Browse files Browse the repository at this point in the history
…ed) story again.
  • Loading branch information
malthe committed Feb 8, 2010
1 parent c1ed6e7 commit 240cf87
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 118 deletions.
104 changes: 0 additions & 104 deletions z3c/jbot/Five.txt

This file was deleted.

22 changes: 8 additions & 14 deletions z3c/jbot/tests/test_doctests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__':
Expand Down
85 changes: 85 additions & 0 deletions z3c/jbot/tests/test_five.py
Original file line number Diff line number Diff line change
@@ -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')

0 comments on commit 240cf87

Please sign in to comment.