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
RevLine 
[1493]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
[1896]9import transaction
[1908]10from zope.component import getUtility
11
[1938]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
[1493]21from AccessControl.SecurityManagement import newSecurityManager
22
23from Products.Five import zcml
24from Products.Five import fiveconfigure
25
26from Testing import ZopeTestCase as ztc
27
[1877]28from Products.CMFCore.utils import getToolByName
29
[1896]30from Products.PloneTestCase.layer import onsetup, PloneSite
[1493]31from Products.PloneTestCase import PloneTestCase as ptc
[1896]32from Products.PloneTestCase import setup as ptc_setup
33
[1877]34from Products.PloneTestCase.PloneTestCase import portal_owner
35from Products.PloneTestCase.PloneTestCase import default_user
36from Products.PloneTestCase.PloneTestCase import default_password
[1493]37
[1877]38from quintagroup.seoptimizer.config import *
[1493]39
[1896]40ptc.setupPloneSite()
[1493]41
[1896]42class NotInstalled(PloneSite):
43    """ Only package register, without installation into portal
[1493]44    """
45
[1896]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)
[1493]54
55
[1896]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]
[1937]63
64        # Sets the local site/manager
65        ptc_setup._placefulSetUp(portal)
66        # Install PROJECT
[1896]67        qi = getattr(portal, 'portal_quickinstaller', None)
68        qi.installProduct(PROJECT_NAME)
69        transaction.commit()
[1493]70
[1937]71    @classmethod
72    def tearDown(cls):
73        ptc_setup._placefulTearDown()
74       
[1493]75
[1792]76class MixinTestCase:
[1493]77
[1792]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
[1908]87    def beforeTearDown(self):
88        getUtility(IRAMCache).invalidateAll()
[1792]89
[1908]90
[1792]91class TestCase(MixinTestCase, ptc.PloneTestCase):
[1896]92    layer = Installed
[1493]93
[1896]94class TestCaseNotInstalled(MixinTestCase, ptc.PloneTestCase):
95    layer = NotInstalled
[1493]96
97
[1896]98class FunctionalTestCase(MixinTestCase, ptc.FunctionalTestCase):
99    layer = Installed
[1493]100
[1896]101class FunctionalTestCaseNotInstalled(MixinTestCase, ptc.FunctionalTestCase):
102    layer = NotInstalled
Note: See TracBrowser for help on using the repository browser.