Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Zope: CMF

Getting started with Unittests for BrowserViews

 

 

Zope cmf RSS feed   Index | Next | Previous | View Threaded


charlie at begeistert

Feb 24, 2009, 8:18 AM

Post #1 of 1 (276 views)
Permalink
Getting started with Unittests for BrowserViews

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[at]lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests

Zope cmf RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.