source: products/quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/base.py @ 1938

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

#161: Fixed differencis in global ram cache utility registration in plone.memoize.v.1.1a4 (tests breaks in plone4)

File size: 3.0 KB
Line 
1"""Test setup for integration and functional tests.
2
3When we import PloneTestCase and then call setupPloneSite(), all of
4Plone's products are loaded, and a Plone site will be created. This
5happens at module level, which makes it faster to run each test, but
6slows down test runner startup.
7"""
8import re
9import transaction
10from zope.component import getUtility
11
12# Starting from plone.memoize v1.1a4 (used in plone4), global ram cache
13# utility provides other IRAMCache interface, than before
14try:
15    # In plone4 provides
16    from zope.ramcache.interfaces.ram import IRAMCache
17except ImportError:
18    # In plone3 provides
19    from zope.app.cache.interfaces.ram import IRAMCache
20
21from AccessControl.SecurityManagement import newSecurityManager
22
23from Products.Five import zcml
24from Products.Five import fiveconfigure
25
26from Testing import ZopeTestCase as ztc
27
28from Products.CMFCore.utils import getToolByName
29
30from Products.PloneTestCase.layer import onsetup, PloneSite
31from Products.PloneTestCase import PloneTestCase as ptc
32from Products.PloneTestCase import setup as ptc_setup
33
34from Products.PloneTestCase.PloneTestCase import portal_owner
35from Products.PloneTestCase.PloneTestCase import default_user
36from Products.PloneTestCase.PloneTestCase import default_password
37
38from quintagroup.seoptimizer.config import *
39
40ptc.setupPloneSite()
41
42class NotInstalled(PloneSite):
43    """ Only package register, without installation into portal
44    """
45
46    @classmethod
47    def setUp(cls):
48        fiveconfigure.debug_mode = True
49        import quintagroup.seoptimizer
50        zcml.load_config('configure.zcml', quintagroup.seoptimizer)
51        #zcml.load_config('overrides.zcml', quintagroup.seoptimizer)
52        fiveconfigure.debug_mode = False
53        ztc.installPackage(PROJECT_NAME)
54
55
56class Installed(NotInstalled):
57    """ Install product into the portal
58    """
59    @classmethod
60    def setUp(cls):
61        app = ztc.app()
62        portal = app[ptc_setup.portal_name]
63
64        # Sets the local site/manager
65        ptc_setup._placefulSetUp(portal)
66        # Install PROJECT
67        qi = getattr(portal, 'portal_quickinstaller', None)
68        qi.installProduct(PROJECT_NAME)
69        transaction.commit()
70
71    @classmethod
72    def tearDown(cls):
73        ptc_setup._placefulTearDown()
74       
75
76class MixinTestCase:
77
78    def _getauth(self):
79        # Fix authenticator for the form
80        import re
81
82        authenticator = self.portal.restrictedTraverse("@@authenticator")
83        html = authenticator.authenticator()
84        handle = re.search('value="(.*)"', html).groups()[0]
85        return handle
86
87    def beforeTearDown(self):
88        getUtility(IRAMCache).invalidateAll()
89
90
91class TestCase(MixinTestCase, ptc.PloneTestCase):
92    layer = Installed
93
94class TestCaseNotInstalled(MixinTestCase, ptc.PloneTestCase):
95    layer = NotInstalled
96
97
98class FunctionalTestCase(MixinTestCase, ptc.FunctionalTestCase):
99    layer = Installed
100
101class FunctionalTestCaseNotInstalled(MixinTestCase, ptc.FunctionalTestCase):
102    layer = NotInstalled
Note: See TracBrowser for help on using the repository browser.