[Checkins]
SVN: Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt
Working on tests
Darryl Cousins
darryl at darrylcousins.net.nz
Fri Jul 20 19:34:35 EDT 2007
Log message for revision 78229:
Working on tests
Changed:
U Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt
-=-
Modified: Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt
===================================================================
--- Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt 2007-07-20 23:13:46 UTC (rev 78228)
+++ Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt 2007-07-20 23:34:34 UTC (rev 78229)
@@ -136,53 +136,19 @@
<div>Second viewlet content</div>
<div>First viewlet content</div>
-Tal Expression
---------------
+Provider
+--------
Usually though we do not directly call on the manager but rather we insert the
-manager into a template using the ``provider`` expression. Here is a template
-file that does just that.
+manager into a template using the ``provider`` expression.
- >>> layout = os.path.join(temp_dir, 'layout.pt')
- >>> open(layout, 'w').write('''
- ... <html>
- ... <body>
- ... <div tal:content="structure provider: mymanager">
- ... here render my manager
- ... </div>
- ... </body>
- ... </html>
- ... ''')
+The manager will be looked up as a multiadapter.
-We need a view and a template to use this template.
+ >>> from zope.contentprovider.interfaces import IContentProvider
+ >>> print zope.component.queryMultiAdapter((content, request, view),
+ ... IContentProvider, 'mymanager')
+ None
- >>> class TestView(mars.view.LayoutView):
- ... grok.context(zope.interface.Interface)
-
- >>> class ViewLayout(mars.template.LayoutFactory):
- ... grok.template(layout)
- ... grok.context(TestView)
-
-We need to manually ``grok`` these classes in the doctest. Usually this happens
-at start up.
-
- >>> from mars.view.meta import LayoutViewGrokker
- >>> LayoutViewGrokker().grok('', TestView, None, module_info, None)
- True
-
- >>> from mars.template.meta import LayoutFactoryGrokker
- >>> LayoutFactoryGrokker().grok('', ViewLayout, None, module_info, None)
- True
-
-We can now look up the view and expect the template to be rendered.
-
- >>> testview = zope.component.getMultiAdapter((content, request),
- ... name='testview')
- >>> print testview()
- Traceback (most recent call last):
- ...
- ContentProviderLookupError: mymanager
-
OK. What happened here is that we have yet ``grokked`` the viewlet manager. Lets
do that.
@@ -191,13 +157,8 @@
... module_info, None)
True
-And we try the view again.
+And we try the lookup again.
- >>> from zope.contentprovider.interfaces import IContentProvider
- >>> from zope.viewlet.interfaces import IViewletManager
- >>> from zope.publisher.interfaces.browser import IBrowserView
- >>> print zope.component.queryMultiAdapter((content, request, testview),
- ... IContentProvider, 'myanager')
+ >>> print zope.component.queryMultiAdapter((content, request, view),
+ ... IContentProvider, 'mymanager')
<MyManager ...>
- >>> print content, request, testview
- >>> print testview()
More information about the Checkins
mailing list