[Zope-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 Zope-Checkins
mailing list