source: products/quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/tests/base.py

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

#228: Switch to use collective.testcaselayer

  • Property svn:eol-style set to native
File size: 4.3 KB
Line 
1#
2# Tests for quintagroup.plonegooglesitemaps
3#
4
5import re, sys
6from urllib import urlencode
7from StringIO import StringIO
8import unittest
9
10from zope.testing import doctestunit
11from zope.interface import Interface
12from zope.component import testing
13from zope.interface import alsoProvides
14from Testing import ZopeTestCase as ztc
15
16from Products.Five import zcml
17from Products.Five import fiveconfigure
18
19from Products.PloneTestCase import PloneTestCase as ptc
20from Products.PloneTestCase.layer import onsetup
21from Products.PloneTestCase.layer import PloneSite
22from Products.PloneTestCase.setup import portal_owner
23from Products.PloneTestCase.setup import default_password
24
25from XMLParser import parse, hasURL
26
27import quintagroup.plonegooglesitemaps
28from quintagroup.plonegooglesitemaps.config import PROJECTNAME
29from quintagroup.plonegooglesitemaps.config import ping_googlesitemap
30from quintagroup.plonegooglesitemaps.config import SUPPORT_BLAYER
31from quintagroup.plonegooglesitemaps.browser import mobilesitemapview
32from quintagroup.plonegooglesitemaps.interfaces import IGoogleSitemapsLayer
33
34from collective.testcaselayer.ptc import BasePTCLayer, ptc_layer
35
36quintagroup.plonegooglesitemaps.config.testing = 1
37quintagroup.plonegooglesitemaps.config.UPDATE_CATALOG = True
38
39PRODUCT = 'quintagroup.plonegooglesitemaps'
40
41
42class NotInstalled(BasePTCLayer):
43    """Initialize the package, without installation into portal
44    """
45    def afterSetUp(self):
46        fiveconfigure.debug_mode = True
47        import quintagroup.plonegooglesitemaps
48        zcml.load_config('configure.zcml', quintagroup.plonegooglesitemaps)
49        zcml.load_config('overrides.zcml', quintagroup.plonegooglesitemaps)
50        fiveconfigure.debug_mode = False
51
52        if not ptc.PLONE31:
53            ztc.installProduct("plone.browserlayer")
54
55        ztc.installPackage(PRODUCT)
56
57
58class Installed(BasePTCLayer):
59    """ Install product into the portal
60    """
61    def afterSetUp(self):
62        if not ptc.PLONE31:
63            self.addProduct("plone.browserlayer")
64        self.addProduct(PRODUCT)
65
66class UnInstalled(BasePTCLayer):
67    """ UnInstall product from the portal
68    """
69    def afterSetUp(self):
70        qi = getattr(self.portal, 'portal_quickinstaller', None)
71        qi.uninstallProducts(products=[PRODUCT,])
72
73
74NotInstalledLayer = NotInstalled([ptc_layer,])
75InstalledLayer = Installed([NotInstalledLayer,])
76UnInstalledLayer = UnInstalled([InstalledLayer,])
77
78
79class IMobileMarker(Interface):
80    """Test Marker interface for mobile objects"""
81
82
83class MixinTestCase(object):
84    """ Define layer and common afterSetup method with package installation.
85        Package installation on plone site setup impossible because of
86        five's registerPackage directive not recognized on module initializing.
87    """
88    def afterSetUp(self):
89        self.loginAsPortalOwner()
90        self.workflow = self.portal.portal_workflow
91        self.orig_mobile_ifaces = None
92        alsoProvides(self.portal.REQUEST, IGoogleSitemapsLayer)
93
94    def patchMobile(self):
95        # patch mobile sitemap view
96        self.orig_mobile_ifaces = mobilesitemapview.MOBILE_INTERFACES
97        mobilesitemapview.MOBILE_INTERFACES = [IMobileMarker.__identifier__,]
98
99    def beforeTearDown(self):
100        if getattr(self, 'orig_mobile_ifaces', None) is not None:
101            mobilesitemapview.MOBILE_INTERFACES = self.orig_mobile_ifaces
102
103
104class TestCaseNotInstalled(ptc.PloneTestCase):
105    layer = NotInstalledLayer
106
107class TestCase(ptc.PloneTestCase, MixinTestCase):
108    layer = InstalledLayer
109
110    def afterSetUp(self):
111        ptc.PloneTestCase.afterSetUp(self)
112        MixinTestCase.afterSetUp(self)
113
114    def beforeTearDown(self):
115        ptc.PloneTestCase.beforeTearDown(self)
116        MixinTestCase.beforeTearDown(self)
117
118
119class TestCaseUnInstalled(ptc.PloneTestCase):
120    layer = UnInstalledLayer
121
122
123class FunctionalTestCaseNotInstalled(ptc.FunctionalTestCase):
124    layer = NotInstalledLayer
125
126class FunctionalTestCase(ptc.FunctionalTestCase, MixinTestCase):
127    layer = InstalledLayer
128
129    def afterSetUp(self):
130        ptc.FunctionalTestCase.afterSetUp(self)
131        MixinTestCase.afterSetUp(self)
132        self.auth = "%s:%s" % (portal_owner, default_password)
133
134    def beforeTearDown(self):
135        ptc.FunctionalTestCase.beforeTearDown(self)
136        MixinTestCase.beforeTearDown(self)
137
138class FunctionalTestCaseUnInstalled(ptc.FunctionalTestCase):
139    layer = UnInstalledLayer
Note: See TracBrowser for help on using the repository browser.