[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