[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Content/ZPTPage/tests - testZPTPage.py:1.1.2.3

Jim Fulton jim@zope.com
Thu, 23 May 2002 14:01:44 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Content/ZPTPage/tests
In directory cvs.zope.org:/tmp/cvs-serv26429/lib/python/Zope/App/OFS/Content/ZPTPage/tests

Modified Files:
      Tag: Zope-3x-branch
	testZPTPage.py 
Log Message:
This all started with wanting to be able to use url;view in a ZPT path. :)

That lead me to:

- Massive traversal refactoring.

  Namespace handling is now centralized in Zope.App.Traversing. 

- ZPT refactoring, including some renaming that touches pretty much everything. :)

  - The application specific ZPT support was moved into
    Zope.App.PageTemplate. 

  - To get page template files (for use in views):

    from Zope.App.PageTemplate import ViewPageTemplateFile

  - Fixed up security so that ZPT expressions only have access to 
    safe builtins and so that modules namespace does imports safely.

  - Got ZPTPage working!

- renaming url to absolute_url and got absolute_url to work in paths.

- Cleaned up the (as yet unused) RestrictedInterpreter module in
  Zope.Security. In particular, changed to use a separate
  RestrictedBuiltins module.



=== Zope3/lib/python/Zope/App/OFS/Content/ZPTPage/tests/testZPTPage.py 1.1.2.2 => 1.1.2.3 ===
 
 from Zope.App.OFS.Content.ZPTPage.ZPTPage import ZPTPage
-from Zope.PageTemplate.tests.testBasicTemplate import BasicTemplateTests
 
+# Wow, this is a lot of work. :(
+from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
+from Zope.App.Traversing.Traverser import Traverser
+from Zope.App.Traversing.ITraverser import ITraverser
+from Zope.App.Traversing.DefaultTraversable import DefaultTraversable
+from Zope.App.Traversing.ITraversable import ITraversable
+from Zope.ComponentArchitecture.GlobalAdapterService import provideAdapter
+from Zope.ContextWrapper import Wrapper
+from Zope.Security.Checker import NamesChecker, defineChecker
+
+class Data(object):
+    def __init__(self, **kw):
+        self.__dict__.update(kw)
+    
+
+    
+class ZPTPageTests(PlacelessSetup, unittest.TestCase):
 
-class ZPTPageTests(BasicTemplateTests):
     def setUp(self):
-        BasicTemplateTests.setUp(self)
-        self.t = ZPTPage()
+        PlacelessSetup.setUp(self)
+        provideAdapter(None, ITraverser, Traverser)
+        provideAdapter(None, ITraversable, DefaultTraversable)
+        defineChecker(Data, NamesChecker(['URL', 'name']))
+
+    def test(self):
+        page = ZPTPage()
+        page.setSource(
+            '<html>'
+            '<head><title tal:content="options/title">blah</title></head>'
+            '<body>'
+            '<a href="foo" tal:attributes="href request/URL/1">'
+            '<span tal:replace="context/name">splat</span>'
+            '</a></body></html>'
+            )
+
+        page = Wrapper(page, Data(name='zope'))
+
+        out = page.render(Data(URL={'1': 'http://foo.com/'}),
+                          title="Zope rules")
+        out = ' '.join(out.split())
 
+        self.assertEqual(
+            out,
+            '<html><head><title>Zope rules</title></head><body>'
+            '<a href="http://foo.com/">'
+            'zope'
+            '</a></body></html>'
+            )
 
 def test_suite():
-   return unittest.makeSuite(ZPTPageTests, 'check')
+   return unittest.makeSuite(ZPTPageTests)
 
 if __name__=='__main__':
    unittest.TextTestRunner().run(test_suite())