Skip to content

Commit

Permalink
Merge pull request #4 from plone/move-to-p-a-testing
Browse files Browse the repository at this point in the history
Set up plone.app.testing
  • Loading branch information
tisto committed Jul 28, 2014
2 parents 9c310f2 + 96c46f7 commit 6511d13
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 129 deletions.
30 changes: 30 additions & 0 deletions plone/app/viewletmanager/testing.py
@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
from plone.app.testing import PLONE_FIXTURE
from plone.app.testing import IntegrationTesting
from plone.testing import Layer
from zope.configuration import xmlconfig

import doctest


class PloneAppViewletmanagerLayer(Layer):

defaultBases = (PLONE_FIXTURE, )

def setUpZope(self, app, configurationContext):
# Load ZCML
import plone.app.viewletmanager
xmlconfig.file(
'configure.zcml',
plone.app.viewletmanager,
context=configurationContext
)


PLONE_APP_VIEWLETMANAGER_FIXTURE = PloneAppViewletmanagerLayer()
PLONE_APP_VIEWLETMANAGER_INTEGRATION_TESTING = IntegrationTesting(
bases=(PLONE_APP_VIEWLETMANAGER_FIXTURE, ),
name='PloneAppViewletmanagerLayer:Integration'
)

optionflags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
36 changes: 17 additions & 19 deletions plone/app/viewletmanager/tests/test_docs.py
@@ -1,27 +1,25 @@
# -*- coding: utf-8 -*-
from zope.testing import doctest
from zope.testing.doctestunit import DocFileSuite
from plone.app.viewletmanager.testing import optionflags

import zope.component.testing
import doctest
import unittest


def tearDown(test):
zope.component.testing.tearDown(test)
doc_tests = [
'storage.rst',
'manager.rst',
]


def test_suite():
from unittest import TestSuite
suite = TestSuite()
suite.addTests((
DocFileSuite(
'storage.rst',
tearDown=tearDown,
optionflags=doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS,
),
DocFileSuite(
'manager.rst',
tearDown=tearDown,
optionflags=doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS,
),
))
suite = unittest.TestSuite()
suite.addTests([
doctest.DocFileSuite(
'tests/{0}'.format(doc_file),
package='plone.app.viewletmanager',
optionflags=optionflags
)
for doc_file in doc_tests
])

return suite
144 changes: 36 additions & 108 deletions plone/app/viewletmanager/tests/test_exportimport.py
Expand Up @@ -4,23 +4,27 @@
from Products.GenericSetup.tests.common import BaseRegistryTests
from Products.GenericSetup.tests.common import DummyExportContext
from Products.GenericSetup.tests.common import DummyImportContext
from Products.PloneTestCase.layer import PloneSite
from Testing.ZopeTestCase import installPackage
from five.localsitemanager import make_objectmanager_site
from persistent.dict import PersistentDict
from plone.app.viewletmanager.exportimport.storage import \
ViewletSettingsStorageNodeAdapter
from plone.app.viewletmanager.exportimport.storage import \
exportViewletSettingsStorage
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage
from plone.app.viewletmanager.interfaces import IViewletSettingsStorage
from plone.app.viewletmanager.storage import ViewletSettingsStorage
from zope.component import getSiteManager
from plone.app.viewletmanager.testing import \
PLONE_APP_VIEWLETMANAGER_INTEGRATION_TESTING
from xml.parsers.expat import ExpatError
from zope.component import getUtility
from zope.site.hooks import setHooks
from zope.site.hooks import setSite

import unittest


# BBB Zope 2.12
try:
from Zope2.App import zcml
from OFS import metaconfigure
zcml, metaconfigure # make pyflakes happy...
metaconfigure
except ImportError:
from Products.Five import zcml
from Products.Five import fiveconfigure as metaconfigure
Expand Down Expand Up @@ -140,36 +144,23 @@
"""


class Layer(PloneSite):

@classmethod
def setUp(cls):
from zope.component import provideAdapter
from plone.app.viewletmanager.exportimport.storage import \
ViewletSettingsStorageNodeAdapter
from Products.GenericSetup.interfaces import IBody
from Products.GenericSetup.interfaces import ISetupEnviron

metaconfigure.debug_mode = True
import plone.app.vocabularies
zcml.load_config('configure.zcml', plone.app.vocabularies)
metaconfigure.debug_mode = False
installPackage('plone.app.vocabularies', quiet=True)
class ViewletSettingsStorageXMLAdapterTests(BodyAdapterTestCase):

provideAdapter(
factory=ViewletSettingsStorageNodeAdapter,
adapts=(IViewletSettingsStorage, ISetupEnviron),
provides=IBody
)
layer = PLONE_APP_VIEWLETMANAGER_INTEGRATION_TESTING

def setUp(self):
self.site = self.layer['portal']
sm = self.site.getSiteManager()
sm.registerUtility(ViewletSettingsStorage(), IViewletSettingsStorage)

class ViewletSettingsStorageXMLAdapterTests(BodyAdapterTestCase):
self._obj = getUtility(IViewletSettingsStorage)
self._BODY = _VIEWLETS_XML

layer = Layer
def tearDown(self):
sm = self.site.getSiteManager()
sm.unregisterUtility(self._obj, IViewletSettingsStorage)

def _getTargetClass(self):
from plone.app.viewletmanager.exportimport.storage \
import ViewletSettingsStorageNodeAdapter
return ViewletSettingsStorageNodeAdapter

def _populate(self, obj):
Expand All @@ -189,45 +180,26 @@ def _verifyImport(self, obj):
self.assertEqual(type(obj._hidden['light']), PersistentDict)
self.assertEqual(dict(obj._hidden['light']), hiddendict)

def setUp(self):
setHooks()
self.site = Folder('site')
make_objectmanager_site(self.site)
setSite(self.site)
sm = getSiteManager()
sm.registerUtility(ViewletSettingsStorage(), IViewletSettingsStorage)

self._obj = getUtility(IViewletSettingsStorage)

self._BODY = _VIEWLETS_XML

def tearDown(self):
sm = getSiteManager(self.site)
sm.unregisterUtility(self._obj, IViewletSettingsStorage)


class _ViewletSettingsStorageSetup(BaseRegistryTests):

layer = Layer
layer = PLONE_APP_VIEWLETMANAGER_INTEGRATION_TESTING

def setUp(self):
BaseRegistryTests.setUp(self)
setHooks()
self.app.site = Folder(id='site')
self.site = self.app.site
make_objectmanager_site(self.site)
setSite(self.site)
sm = getSiteManager(self.site)
self.app = self.layer['app']
self.site = self.layer['portal']
sm = self.site.getSiteManager()
sm.registerUtility(ViewletSettingsStorage(), IViewletSettingsStorage)
self.storage = getUtility(IViewletSettingsStorage)

def afterSetUp(self):
# avoid setting up an unrestricted user
# which causes test isolation issues
# which causes test isolation issues
pass

def tearDown(self):
sm = getSiteManager(self.site)
sm = self.site.getSiteManager()
sm.unregisterUtility(self.storage, IViewletSettingsStorage)

def _populateSite(self, order={}, hidden={}):
Expand All @@ -242,12 +214,9 @@ def _populateSite(self, order={}, hidden={}):
hidden[skinname][manager])


class exportViewletSettingsStorageTests(_ViewletSettingsStorageSetup):
class ExportViewletSettingsStorageTests(_ViewletSettingsStorageSetup):

def test_empty(self):
from plone.app.viewletmanager.exportimport.storage import \
exportViewletSettingsStorage

context = DummyExportContext(self.site)
exportViewletSettingsStorage(context)

Expand All @@ -258,8 +227,6 @@ def test_empty(self):
self.assertEqual(content_type, 'text/xml')

def test_normal(self):
from plone.app.viewletmanager.exportimport.storage import \
exportViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
Expand All @@ -275,7 +242,7 @@ def test_normal(self):
self.assertEqual(content_type, 'text/xml')


class importViewletSettingsStorageTests(_ViewletSettingsStorageSetup):
class ImportViewletSettingsStorageTests(_ViewletSettingsStorageSetup):

_VIEWLETS_XML = _VIEWLETS_XML
_EMPTY_EXPORT = _EMPTY_EXPORT
Expand All @@ -289,9 +256,6 @@ class importViewletSettingsStorageTests(_ViewletSettingsStorageSetup):
_FRAGMENT7_IMPORT = _FRAGMENT7_IMPORT

def test_empty_default_purge(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand All @@ -314,9 +278,6 @@ def test_empty_default_purge(self):
self.assertEqual(len(utility.getOrder('top', 'undefined')), 0)

def test_empty_explicit_purge(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand All @@ -339,9 +300,6 @@ def test_empty_explicit_purge(self):
self.assertEqual(len(utility.getOrder('top', 'undefined')), 0)

def test_empty_skip_purge(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand All @@ -364,9 +322,6 @@ def test_empty_skip_purge(self):
self.assertEqual(len(utility.getOrder('top', 'undefined')), 3)

def test_specific_child_purge(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand All @@ -389,9 +344,6 @@ def test_specific_child_purge(self):
self.assertEqual(len(utility.getOrder('top', 'undefined')), 0)

def test_normal(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

site = self.site
utility = self.storage
self.assertEqual(len(utility._order.keys()), 0)
Expand All @@ -409,9 +361,6 @@ def test_normal(self):
self.assertEqual(utility.getHidden('top', 'light'), ('two', ))

def test_fragment_skip_purge(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand Down Expand Up @@ -440,8 +389,7 @@ def test_fragment_skip_purge(self):
context._files['viewlets.xml'] = self._FRAGMENT2_IMPORT
importViewletSettingsStorage(context)

#self.assertEqual(len(utility._order.keys()), 2)
self.assertEqual(len(utility._order.keys()), 3)
self.assertEqual(len(utility._order.keys()), 4)

self.assertEqual(len(utility._hidden.keys()), 1)

Expand All @@ -458,9 +406,6 @@ def test_fragment_skip_purge(self):
('four', 'three', 'two', 'one'))

def test_fragment3_skip_purge(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand Down Expand Up @@ -489,9 +434,6 @@ def test_fragment3_skip_purge(self):
self.assertEqual(utility.getHidden('top', 'light'), ('two', ))

def test_fragment4_remove(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand All @@ -517,9 +459,6 @@ def test_fragment4_remove(self):
self.assertEqual(utility.getHidden('top', 'light'), ('two', ))

def test_fragment5_based_on(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand Down Expand Up @@ -555,9 +494,6 @@ def test_fragment5_based_on(self):
self.assertEqual(utility.getHidden('top', 'light'), ('two', ))

def test_fragment6_make_default(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN
self._populateSite(order=_ORDER, hidden=_HIDDEN)
Expand All @@ -583,9 +519,6 @@ def test_fragment6_make_default(self):
self.assertEqual(utility.getHidden('top', 'undefined'), ('two', ))

def test_fragment7_make_default(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage

_ORDER = COMMON_SETUP_ORDER
_HIDDEN = COMMON_SETUP_HIDDEN

Expand All @@ -610,20 +543,15 @@ def test_fragment7_make_default(self):
self.assertEqual(utility.getHidden('top', 'basic'), ('two', ))

def test_syntax_error_reporting(self):
from plone.app.viewletmanager.exportimport.storage import \
importViewletSettingsStorage
from xml.parsers.expat import ExpatError
site = self.site
context = DummyImportContext(site, False)
context._files['viewlets.xml'] = """<?xml version="1.0"?>\n<"""
self.assertRaises(ExpatError, importViewletSettingsStorage, context)


def test_suite():
from unittest import TestSuite
from unittest import makeSuite
suite = TestSuite()
suite.addTest(makeSuite(ViewletSettingsStorageXMLAdapterTests))
suite.addTest(makeSuite(exportViewletSettingsStorageTests))
suite.addTest(makeSuite(importViewletSettingsStorageTests))
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(ViewletSettingsStorageXMLAdapterTests))
suite.addTest(unittest.makeSuite(ExportViewletSettingsStorageTests))
suite.addTest(unittest.makeSuite(ImportViewletSettingsStorageTests))
return suite
3 changes: 1 addition & 2 deletions setup.py
Expand Up @@ -13,9 +13,8 @@
extras_require = {
'test': [
'Products.CMFPlone',
'Products.PloneTestCase',
'plone.app.testing',
'zope.publisher',
'zope.testing',
]
}

Expand Down

0 comments on commit 6511d13

Please sign in to comment.