[Checkins] SVN: Products.Five/branches/1.5/component/ Add testbrowser test for making folders sites and registering local components.

Alec Mitchell apm13 at columbia.edu
Sat Oct 28 17:33:43 EDT 2006


Log message for revision 70948:
  Add testbrowser test for making folders sites and registering local components.
  

Changed:
  A   Products.Five/branches/1.5/component/makesite.txt
  U   Products.Five/branches/1.5/component/tests.py

-=-
Added: Products.Five/branches/1.5/component/makesite.txt
===================================================================
--- Products.Five/branches/1.5/component/makesite.txt	2006-10-28 21:10:20 UTC (rev 70947)
+++ Products.Five/branches/1.5/component/makesite.txt	2006-10-28 21:33:42 UTC (rev 70948)
@@ -0,0 +1,109 @@
+Turning folders into sites
+==========================
+
+Set up
+------
+
+Make this test available as a module so that stuff defined in here can
+be pickled properly:
+
+    >>> from zope.testing.module import setUp, tearDown
+    >>> setUp(test, name='Products.Five.component.makesite')
+
+Load all of Five's configuration (this is a functional test):
+
+    >>> import Products.Five
+    >>> from Products.Five.zcml import load_config
+    >>> load_config('configure.zcml', package=Products.Five)
+
+Enable local component lookup hooks:
+
+    >>> from zope.app.component.hooks import setHooks
+    >>> setHooks()
+
+
+Making a site
+-------------
+
+    >>> uf = app.acl_users
+    >>> uf._doAddUser('manager', 'r00t', ['Manager'], [])
+
+Create the test browser we'll be using:
+
+    >>> from Products.Five.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.addHeader('Authorization', 'Basic manager:r00t')
+
+Let's add a folder:
+
+    >>> browser.open('http://localhost/manage_addProduct/OFSP/folderAdd')
+    >>> browser.getControl(name='id').value = 'folder'
+    >>> browser.getControl('Add').click()
+    >>> browser.getLink('folder').click()
+
+We can turn it into a site by using the ``components.html`` view:
+
+    >>> browser.open('http://localhost/folder/components.html')
+    >>> browser.getControl('Make site').click()
+
+Now we ensure that the folder has been turned into a site:
+
+    >>> from zope.app.component.interfaces import ISite
+    >>> ISite.providedBy(app.folder)
+    True
+
+We get the site manager for the folder and assert that it is indeed a
+component registry:
+
+    >>> sm = app.folder.getSiteManager()
+    >>> from zope.component.interfaces import IComponents
+    >>> IComponents.providedBy(sm)
+    True
+
+Now we register a simple view locally that we will look up via
+traversal:
+
+    >>> from Products.Five.browser import BrowserView
+    >>> class TestView(BrowserView):
+    ...     """A silly docstring"""
+    ...     __name__ = 'testview.html'
+    ...     def __call__(self):
+    ...         return "Hello World!"
+    >>> from OFS.interfaces import IObjectManager
+    >>> from zope.interface import Interface
+    >>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+    >>> from zope.component import getGlobalSiteManager
+    >>> sm.registerAdapter(TestView, (IObjectManager, IDefaultBrowserLayer),
+    ...                    Interface, name='testview.html')
+
+Browse to our local view and check that it works:
+
+    >>> browser.handleErrors = False
+    >>> browser.open('http://localhost/folder/testview.html')
+    >>> print browser.contents
+    Hello World!
+
+Unmaking a site
+---------------
+
+Folderish sites can be reverted back to standard folders also using
+the ``components.html`` view:
+
+    >>> browser.open('http://localhost/folder/components.html')
+    >>> browser.getControl('Unmake site').click()
+
+Ensure that its local components are no longer available:
+
+    >>> ISite.providedBy(app.folder)
+    False
+    >>> browser.open('http://localhost/folder/@@testview.html')
+    Traceback (most recent call last):
+    ...
+    NotFound: ...
+
+Clean up:
+---------
+
+    >>> from zope.testing.cleanup import cleanUp
+    >>> cleanUp()
+    >>> tearDown(test, name='Products.Five.component.makesite')

Modified: Products.Five/branches/1.5/component/tests.py
===================================================================
--- Products.Five/branches/1.5/component/tests.py	2006-10-28 21:10:20 UTC (rev 70947)
+++ Products.Five/branches/1.5/component/tests.py	2006-10-28 21:33:42 UTC (rev 70948)
@@ -17,12 +17,15 @@
 """
 import unittest
 from zope.testing.doctestunit import DocFileSuite, DocTestSuite
+from Testing.ZopeTestCase import FunctionalDocFileSuite
 
 __docformat__ = "reStructuredText"
 
 def test_suite():
     return unittest.TestSuite([
         DocFileSuite('component.txt', package="Products.Five.component"),
+        FunctionalDocFileSuite('makesite.txt',
+                               package="Products.Five.component"),
         ])
 
 if __name__ == '__main__':



More information about the Checkins mailing list