z3c.form ======== .. code-block:: python def test_flag_article_as_inappropriate_with_comment(self): provideAdapter(adapts=(Interface, IBrowserRequest), provides=Interface, factory=FlagArticleAsInapproriateForm, name=u"flag_as_inappropriate") flagAsInappropriateForm = getMultiAdapter( (self.article, self.request), name=u"flag_as_inappropriate") flagAsInappropriateForm.request.form = { 'form.widgets.reason': 'This is a very naughty comment!'} flagAsInappropriateForm.update() data, errors = flagAsInappropriateForm\ .extractData() self.assertEqual(len(errors), 0) flagAsInappropriateForm.handleApply(flagAsInappropriateForm, "foo") self.assertEquals('flagged', self.wftool.getInfoFor(self.article, 'review_state')) self.assertEquals('This is a very naughty comment!', self.wftool.getInfoFor(self.article, 'comments')) self.assertEquals(len(self.mailhost.messages), 1) OLD WAY ------- .. code-block:: python from zope.interface import Interface from zope.component import getMultiAdapter from zope.component import createObject, queryUtility from zope.component import provideAdapter from zope.publisher.interfaces.browser import IBrowserRequest from zope import interface from zope.interface import alsoProvides from zope.publisher.browser import TestRequest from zope.annotation.interfaces import IAttributeAnnotatable from z3c.form.interfaces import IFormLayer from zope.component import getMultiAdapter from freitag.membership.views.memberprofile import MemberProfileEditForm ... def test_edit_form(self): def make_request(form={}): request = TestRequest() request.form.update(form) alsoProvides(request, IFormLayer) alsoProvides(request, IAttributeAnnotatable) return request provideAdapter(adapts=(Interface, IBrowserRequest), provides=Interface, factory=MemberProfileEditForm, name=u"personal-preferences") request = make_request(form={}) editForm = getMultiAdapter((self.portal, request), name=u"personal-preferences") editForm.update() data, errors = editForm.extractData() self.assertEqual(len(errors), 0)