source: products/quintagroup.pfg.captcha/trunk/quintagroup/pfg/captcha/tests.py @ 2098

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

#174: added tests for CaptchaField?

  • Property svn:eol-style set to native
File size: 4.1 KB
RevLine 
[2096]1import re
[2097]2import string
[2096]3import unittest
4
5from Products.Five import zcml
6from Products.Five import fiveconfigure
7from Testing import ZopeTestCase as ztc
8from Products.PloneTestCase.layer import onsetup
9from Products.PloneTestCase import PloneTestCase as ptc
[2098]10from Products.CMFCore.permissions import View
11from Products.Archetypes.atapi import StringField
[2096]12
[2098]13from quintagroup.pfg.captcha import CaptchaWidget
14from quintagroup.pfg.captcha import CaptchaValidator
15from quintagroup.pfg.captcha.field import CAPTCHA_ID, HIDDEN_FIELDS
16
17_marker = object()
18
[2096]19PRODUCTS = [
20    'quintagroup.captcha.core',
21    'quintagroup.pfg.captcha',
22]
23PROFILES = [p+':default' for p in PRODUCTS]
24
25@onsetup
26def setup_product():
27    fiveconfigure.debug_mode = True
28    import quintagroup.pfg.captcha
29    zcml.load_config('configure.zcml', quintagroup.pfg.captcha)
30    fiveconfigure.debug_mode = False
[2098]31    ztc.installProduct('PloneFormGen')
[2096]32    ztc.installPackage('quintagroup.pfg.captcha')
33    ztc.installPackage('quintagroup.captcha.core')
34
35setup_product()
[2098]36ptc.setupPloneSite(products=['PloneFormGen',], extension_profiles=PROFILES)
[2096]37
38
[2097]39class TestInstallations(ptc.PloneTestCase):
40
41    def testInstalledProducts(self):
42        qi = self.portal.portal_quickinstaller
43        installed = [p['id'] for p in qi.listInstalledProducts()]
44        for p in PRODUCTS:
45            if p.startswith('Products'):
46                p = p[9:]
47            self.assertEqual(p in installed, True,
48                '"%s" product not installed' % p)
49
50    def testType(self):
51        pt = self.portal.portal_types
52        self.assertEqual("CaptchaField" in pt.objectIds(), True)
53
54    def testPortalFactory(self):
55        pf = self.portal.portal_factory
56        self.assertEqual("CaptchaField" in pf.getFactoryTypes(), True)
57
58    def testWorkflow(self):
59        pw = self.portal.portal_workflow
60        default_chain = pw.getDefaultChain()
61        cf_chain = pw.getChainForPortalType('CaptchaField')
62        self.assertNotEqual(cf_chain == default_chain , True)
63
64    def testNotToList(self):
65        navtree = self.portal.portal_properties.navtree_properties
66        mtNotToList = navtree.getProperty("metaTypesNotToList")
67        self.assertEqual('CaptchaField' in mtNotToList, True)
68
69    def testSkins(self):
70        ps = self.portal.portal_skins
71        self.assertEqual("qplonecaptchafield" in ps.objectIds(), True)
72        for sname, spath in ps.getSkinPaths():
73            paths = filter(None, map(string.strip, spath.split(',')))
74            self.assertEqual("qplonecaptchafield" in paths, True,
75                '"qplonecaptchafield" layer not present in "%s" skin' % sname)
76
[2098]77
78class TestCaptchaField(ptc.PloneTestCase):
79
80    def afterSetUp(self):
81        self.folder.invokeFactory('FormFolder', 'ff1')
82        self.ff1 = getattr(self.folder, 'ff1')
83        self.ff1.invokeFactory('CaptchaField', 'captcha_field')
84   
85    def testId(self):
86        """CaptchaField has always CAPTCHA_ID id."""
87        self.assertEqual(CAPTCHA_ID in self.ff1, True)
88        self.assertNotEqual('captcha_field' in self.ff1, True)
89
90    def testSchema(self):
91        cf = getattr(self.ff1, CAPTCHA_ID)
92        schema = cf.Schema()
93        for field in HIDDEN_FIELDS:
94            visibility = schema[field].widget.visible
95            self.assertEqual(visibility, {'view':'invisible','edit':'invisible'},
96                '"%s" field is not hidden, but %s:' % (field, visibility))
97
98    def testFGField(self):
99        cf = getattr(self.ff1, CAPTCHA_ID)
100        fgField = getattr(cf, 'fgField', _marker)
101        self.assertNotEqual(fgField, _marker)
102        # Test fgField properties
103        self.assertEqual(type(fgField), StringField)
104        self.assertEqual(bool(fgField.searchable), False )
105        self.assertEqual(fgField.write_permission, View,)
106        self.assertEqual(type(fgField.widget), CaptchaWidget)
107        validators = [v.__class__ for v in fgField.validators._chain]
108        self.assertEqual(CaptchaValidator in validators, True)
[2097]109           
110
[2096]111def test_suite():
112    suite = unittest.TestSuite()
[2097]113    suite.addTest(unittest.makeSuite(TestInstallations))
[2098]114    suite.addTest(unittest.makeSuite(TestCaptchaField))
[2096]115    return suite
Note: See TracBrowser for help on using the repository browser.