Hi, I've finally got some time to work on my browser view for folders. Based on Yuppie's doctest I've started writing a unittest testsuite so that I can write the tests for the missing functionality and learn more about unittest as I go along but I'm stumbling at the first hurdle: what's the best way to call my view? Directly from the view class or as Multiadapter? If it is the latter what's the correct call for this as I don't seem to be able to get it right in the zope shell:
>>> folder = site.subfolder >>> folder <PortalFolder at /CMFDefault/subfolder> >>> getMultiAdapter((folder, request), IBrowserPublisher, name=u"contents.html") Traceback (most recent call last): File "<stdin>", line 1, in ? File "/Users/charlieclark/CMF-Sandbox/cmf-trunk/eggs/ zope.component-3.4.0-py2.4.egg/zope/component/_api.py", line 103, in getMultiAdapter raise ComponentLookupError(objects, interface, name) zope.component.interfaces.ComponentLookupError: ((<PortalFolder at / CMFDefault/subfolder>, <zope.publisher.browser.TestRequest instance URL=http://127.0.0.1>), <InterfaceClass zope.publisher.interfaces.browser.IBrowserPublisher>, u'contents.html') but >>> from Products.CMFDefault.browser.new_folder import ContentsView >>> view = ContentsView(folder, request) >>> IBrowserPublisher.providedBy(viw) True I've noticed that many of the tests use a DummyRequest dictionary but using an instance of this doesn't work either. This is the stub of my testsuite: import unittest from zope.component import getSiteManager from zope.component import getMultiAdapter from zope.publisher.browser import TestRequest from Products.CMFCore.PortalFolder import PortalFolder from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummyTool from Products.CMFCore.interfaces import IPropertiesTool class FolderBrowserViewTests(unittest.TestCase): def setUp(self): """Setup a site""" # maybe there is a base class for this? self.site = site = DummySite('site') self.sm = getSiteManager() mtool = site._setObject('portal_membership', DummyTool()) ptool = site._setObject('portal_properties', DummyTool()) self.sm.registerUtility(ptool, IPropertiesTool) ttool = site._setObject('portal_types', DummyTool()) utool = site._setObject('portal_url', DummyTool()) folder = PortalFolder('test') site._setObject('test', folder) self.context = folder def test_view(): request = TestRequest() view = getMultiAdapter((self.context, request), 'contents.html') # will fail def test_suite(): suite = unittest.TestSuite) suite.addTest(unittest.makeSuite(FolderBrowserViewTests)) return suite I'm very grateful for any suggestions. Charlie -- Charlie Clark Helmholtzstr. 20 Düsseldorf D- 40215 Tel: +49-211-938-5360 GSM: +49-178-782-6226 _______________________________________________ Zope-CMF maillist - Zope-CMF@lists.zope.org http://mail.zope.org/mailman/listinfo/zope-cmf See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests