[Checkins] SVN: five.megrok.z3cpt/trunk/ Add functional tests on template association/rendering.
Sylvain Viollon
sylvain at infrae.com
Wed Oct 15 17:46:47 EDT 2008
Log message for revision 92265:
Add functional tests on template association/rendering.
Changed:
U five.megrok.z3cpt/trunk/buildout.cfg
_U five.megrok.z3cpt/trunk/devel/
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftesting.zcml
U five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/__init__.py
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/__init__.py
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced.py
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/drawing.zpt
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/painting.zpt
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/simple.py
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/test_grok_functional.py
U five.megrok.z3cpt/trunk/five/megrok/z3cpt/templatereg.py
A five.megrok.z3cpt/trunk/five/megrok/z3cpt/testing.py
U five.megrok.z3cpt/trunk/setup.py
-=-
Modified: five.megrok.z3cpt/trunk/buildout.cfg
===================================================================
--- five.megrok.z3cpt/trunk/buildout.cfg 2008-10-15 21:35:37 UTC (rev 92264)
+++ five.megrok.z3cpt/trunk/buildout.cfg 2008-10-15 21:46:46 UTC (rev 92265)
@@ -5,6 +5,8 @@
zopepy
test
develop = .
+ devel/five.grok
+ devel/five.pt
newest = false
@@ -41,4 +43,4 @@
recipe = zc.recipe.testrunner
eggs = ${instance:eggs}
extra-paths = ${zope2:location}/lib/python
-defaults = ['-m', 'five.grok', '--tests-pattern', '^f?tests$', '-v']
+defaults = ['-m', 'five.megrok.z3cpt', '--tests-pattern', '^f?tests$', '-v']
Property changes on: five.megrok.z3cpt/trunk/devel
___________________________________________________________________
Name: svn:externals
+ # svn propset svn:externals -F EXTERNALS.txt
five.grok svn://svn.zope.org/repos/main/five.grok/trunk
five.pt svn://svn.zope.org/repos/main/five.pt/trunk
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftesting.zcml
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftesting.zcml (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftesting.zcml 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,14 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:grok="http://namespaces.zope.org/grok">
+
+ <!-- This file acts kinda like a virtual "site.zcml" during
+ ftesting. -->
+ <include package="five.grok" file="ftesting.zcml" />
+ <include package="five.megrok.z3cpt" file="configure.zcml" />
+
+ <!-- And also grok all the ftests /-->
+ <grok:grok package="five.megrok.z3cpt.ftests" />
+
+
+</configure>
Modified: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/__init__.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/__init__.py 2008-10-15 21:35:37 UTC (rev 92264)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/__init__.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1 @@
+
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/__init__.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/__init__.py (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/__init__.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1 @@
+
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced.py (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,41 @@
+"""
+ >>> from five.megrok.z3cpt.ftests.templates.advanced import *
+ >>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
+
+ >>> from Products.Five.testbrowser import Browser
+ >>> browser = Browser()
+ >>> browser.handleErrors = False
+ >>> browser.open("http://localhost/manfred/@@painting")
+ >>> print browser.contents
+ <html>
+ <body>
+ <h1>Hello World</h1>
+ </body>
+ </html>
+ >>> browser.open("http://localhost/manfred/@@drawing")
+ >>> print browser.contents
+ <html>
+ <body>
+ <h1>Hello World</h1>
+ <p>Nothing for the moment</p>
+ </body>
+ </html>
+
+"""
+
+from five import grok
+from five.megrok import z3cpt
+
+class Mammoth(grok.Model):
+ pass
+
+
+class Painting(grok.View):
+ pass
+
+class Drawing(grok.View):
+
+ @property
+ def description(self):
+ return u'Nothing for the moment'
+
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/drawing.zpt
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/drawing.zpt (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/drawing.zpt 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,7 @@
+<html>
+<body>
+<h1>Hello World</h1>
+<p tal:content="view.description">Description</p>
+</body>
+</html>
+
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/painting.zpt
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/painting.zpt (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/advanced_templates/painting.zpt 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,5 @@
+<html>
+<body>
+<h1>Hello World</h1>
+</body>
+</html>
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/simple.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/simple.py (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/templates/simple.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,57 @@
+"""
+ >>> from five.megrok.z3cpt.ftests.templates.simple import *
+ >>> id = getRootFolder()._setObject("manfred", Mammoth(id='manfred'))
+
+ >>> from Products.Five.testbrowser import Browser
+ >>> browser = Browser()
+ >>> browser.handleErrors = False
+ >>> browser.open("http://localhost/manfred/@@painting")
+ >>> print browser.contents
+ <html>
+ <body>
+ <h1>Hello World</h1>
+ </body>
+ </html>
+ >>> browser.open("http://localhost/manfred/@@drawing")
+ >>> print browser.contents
+ <html>
+ <body>
+ <h1>Hello World</h1>
+ <p>Nothing for the moment</p>
+ </body>
+ </html>
+
+"""
+
+from five import grok
+from five.megrok import z3cpt
+
+class Mammoth(grok.Model):
+ pass
+
+
+class Painting(grok.View):
+ pass
+
+painting = z3cpt.PageTemplate("""
+<html>
+<body>
+<h1>Hello World</h1>
+</body>
+</html>
+""")
+
+class Drawing(grok.View):
+
+ @property
+ def description(self):
+ return u'Nothing for the moment'
+
+drawing = z3cpt.PageTemplate("""
+<html>
+<body>
+<h1>Hello World</h1>
+<p tal:content="view.description">Description</p>
+</body>
+</html>
+""")
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/test_grok_functional.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/test_grok_functional.py (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/ftests/test_grok_functional.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,66 @@
+import unittest
+
+from pkg_resources import resource_listdir
+from zope.testing import doctest
+from zope.app.testing.functional import HTTPCaller
+from five.megrok.z3cpt.testing import GrokFunctionalLayer
+from Testing.ZopeTestCase.zopedoctest.functional import getRootFolder, sync
+from Testing.ZopeTestCase import FunctionalDocTestSuite
+
+from Testing.ZopeTestCase import installProduct
+installProduct('PageTemplates')
+
+
+def http_call(method, path, data=None, **kw):
+ """Function to help make RESTful calls.
+
+ method - HTTP method to use
+ path - testbrowser style path
+ data - (body) data to submit
+ kw - any request parameters
+ """
+
+ if path.startswith('http://localhost'):
+ path = path[len('http://localhost'):]
+ request_string = '%s %s HTTP/1.1\n' % (method, path)
+ for key, value in kw.items():
+ request_string += '%s: %s\n' % (key, value)
+ if data is not None:
+ request_string += '\r\n'
+ request_string += data
+ return HTTPCaller()(request_string, handle_errors=False)
+
+
+def suiteFromPackage(name):
+ files = resource_listdir(__name__, name)
+ suite = unittest.TestSuite()
+ for filename in files:
+ if not filename.endswith('.py'):
+ continue
+ if filename == '__init__.py':
+ continue
+
+ dottedname = 'five.megrok.z3cpt.ftests.%s.%s' % (name, filename[:-3])
+ test = FunctionalDocTestSuite(
+ dottedname,
+ extraglobs=dict(http=HTTPCaller(),
+ http_call=http_call,
+ getRootFolder=getRootFolder,
+ sync=sync),
+ optionflags=(doctest.ELLIPSIS+
+ doctest.NORMALIZE_WHITESPACE+
+ doctest.REPORT_NDIFF))
+ test.layer = GrokFunctionalLayer
+
+ suite.addTest(test)
+ return suite
+
+
+def test_suite():
+ suite = unittest.TestSuite()
+ for name in ['templates', ]:
+ suite.addTest(suiteFromPackage(name))
+ return suite
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Modified: five.megrok.z3cpt/trunk/five/megrok/z3cpt/templatereg.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/templatereg.py 2008-10-15 21:35:37 UTC (rev 92264)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/templatereg.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -8,7 +8,7 @@
class ZopeTwoPageTemplate(PageTemplate):
def setFromString(self, string):
- self._template = ViewPageTemplate
+ self._template = ViewPageTemplate(string)
def setFromFilename(self, filename, _prefix=None):
self._template = ViewPageTemplateFile(filename, _prefix)
Added: five.megrok.z3cpt/trunk/five/megrok/z3cpt/testing.py
===================================================================
--- five.megrok.z3cpt/trunk/five/megrok/z3cpt/testing.py (rev 0)
+++ five.megrok.z3cpt/trunk/five/megrok/z3cpt/testing.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -0,0 +1,27 @@
+
+from five.grok.testing import cleanUp, setDebugMode
+
+import five.megrok.z3cpt
+
+def safe_load_site():
+ '''Loads entire component architecture (w/ debug mode on).'''
+ cleanUp()
+ setDebugMode(1)
+ import Products.Five.zcml as zcml
+ zcml.load_site()
+ zcml.load_config('ftesting.zcml', five.megrok.z3cpt)
+ setDebugMode(0)
+
+class Layer:
+
+ def setUp(cls):
+ '''Sets up the CA by loading etc/site.zcml.'''
+ safe_load_site()
+ setUp = classmethod(setUp)
+
+ def tearDown(cls):
+ '''Cleans up the CA.'''
+ cleanUp()
+ tearDown = classmethod(tearDown)
+
+GrokFunctionalLayer = Layer
Modified: five.megrok.z3cpt/trunk/setup.py
===================================================================
--- five.megrok.z3cpt/trunk/setup.py 2008-10-15 21:35:37 UTC (rev 92264)
+++ five.megrok.z3cpt/trunk/setup.py 2008-10-15 21:46:46 UTC (rev 92265)
@@ -17,7 +17,7 @@
author='Sylvain Viollon',
author_email='sylvain at infrae.com',
url='',
- license='GPL',
+ license='ZPL 2.1',
packages=find_packages(exclude=['ez_setup']),
namespace_packages=['five', 'five.megrok'],
include_package_data=True,
More information about the Checkins
mailing list