source: products/quintagroup.z3cform.captcha/branches/captchas-refactoring/quintagroup/z3cform/captcha/tests.py @ 2075

Last change on this file since 2075 was 2075, checked in by mylan, 14 years ago

#185: Add registration tests

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1import unittest
2
3from zope.interface import alsoProvides
4from zope.schema.interfaces import IField
5from zope.component import queryMultiAdapter
6from zope.publisher.browser import TestRequest
7
8from z3c.form.interfaces import IFormLayer
9from z3c.form.interfaces import IValidator
10from z3c.form.interfaces import IFieldWidget
11from z3c.form.interfaces import IErrorViewSnippet
12
13from Products.Five import zcml
14from Products.Five import fiveconfigure
15from Testing import ZopeTestCase as ztc
16from Products.PloneTestCase.layer import onsetup
17from Products.PloneTestCase import PloneTestCase as ptc
18
19from quintagroup.z3cform.captcha import Captcha
20from quintagroup.z3cform.captcha import CaptchaWidget
21from quintagroup.z3cform.captcha.widget import CaptchaWidgetFactory
22
23@onsetup
24def setup_product():
25    fiveconfigure.debug_mode = True
26    # Register z3c namespace first
27    import z3c.form
28    zcml.load_config('meta.zcml', z3c.form)
29    # Now register quintagroup.z3cform.captcha package
30    import quintagroup.captcha.core
31    import quintagroup.z3cform.captcha
32    zcml.load_config('configure.zcml', quintagroup.z3cform.captcha)
33    fiveconfigure.debug_mode = False
34    ztc.installPackage('quintagroup.captcha.core')
35
36setup_product()
37ptc.setupPloneSite(extension_profiles=['quintagroup.captcha.core:default',])
38
39
40class TestRegistrations(ptc.PloneTestCase):
41
42    def afterSetUp(self):
43        super(TestRegistrations, self).afterSetUp()
44        self.request = self.app.REQUEST
45        alsoProvides(self.request, IFormLayer)
46
47    def testCaptchaFieldInterface(self):
48        self.assertEqual(IField.implementedBy(Captcha), True)
49
50    def testCaptchaWidgetInterface(self):
51        self.assertEqual(IFieldWidget.implementedBy(CaptchaWidgetFactory), True)
52
53    def testWidgetRegistration(self):
54        cfield = Captcha()
55        cwidget = queryMultiAdapter((cfield, self.request), IFieldWidget)
56        self.assertNotEqual(cwidget, None)
57
58    def testValidatorRegistration(self):
59        cfield = Captcha()
60        cvalidator = queryMultiAdapter((None, self.request, None, cfield, None),
61                IValidator)
62        self.assertNotEqual(cvalidator, None)
63
64    def testErrorViewRegistration(self):
65        cfield = Captcha()
66        cwidget = queryMultiAdapter((cfield, self.request), IFieldWidget)
67        error = ValueError()
68        eview = queryMultiAdapter(
69            (error, self.request, cwidget, cfield, None, None),
70            IErrorViewSnippet)
71        self.assertNotEqual(eview, None)
72
73
74def test_suite():
75    suite = unittest.TestSuite()
76    suite.addTest(unittest.makeSuite(TestRegistrations))
77    return suite
Note: See TracBrowser for help on using the repository browser.