/
test_controlpanel.py
131 lines (105 loc) · 4.87 KB
/
test_controlpanel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# -*- coding: utf-8 -*-
from collective.cover.config import DEFAULT_AVAILABLE_TILES
from collective.cover.config import DEFAULT_GRID_SYSTEM
from collective.cover.config import DEFAULT_SEARCHABLE_CONTENT_TYPES
from collective.cover.config import PROJECTNAME
from collective.cover.controlpanel import ICoverSettings
from collective.cover.testing import INTEGRATION_TESTING
from plone import api
from plone.app.testing import logout
from plone.registry.interfaces import IRegistry
from zope.component import getUtility
import unittest
class ControlPanelTestCase(unittest.TestCase):
layer = INTEGRATION_TESTING
def setUp(self):
self.portal = self.layer['portal']
self.controlpanel = self.portal['portal_controlpanel']
def test_controlpanel_has_view(self):
request = self.layer['request']
view = api.content.get_view(u'cover-settings', self.portal, request)
view = view.__of__(self.portal)
self.assertTrue(view())
def test_controlpanel_view_is_protected(self):
from AccessControl import Unauthorized
logout()
with self.assertRaises(Unauthorized):
self.portal.restrictedTraverse('@@cover-settings')
def test_controlpanel_installed(self):
actions = [a.getAction(self)['id']
for a in self.controlpanel.listActions()]
self.assertIn('cover', actions)
def test_controlpanel_removed_on_uninstall(self):
qi = self.portal['portal_quickinstaller']
with api.env.adopt_roles(['Manager']):
qi.uninstallProducts(products=[PROJECTNAME])
actions = [a.getAction(self)['id']
for a in self.controlpanel.listActions()]
self.assertNotIn('cover', actions)
def test_controlpanel_permissions(self):
roles = ['Manager', 'Site Administrator']
for r in roles:
with api.env.adopt_roles([r]):
configlets = self.controlpanel.enumConfiglets(group='Products')
configlets = [a['id'] for a in configlets]
self.assertIn(
'cover', configlets, 'configlet not listed for ' + r)
class RegistryTestCase(unittest.TestCase):
layer = INTEGRATION_TESTING
def setUp(self):
self.portal = self.layer['portal']
self.registry = getUtility(IRegistry)
self.settings = self.registry.forInterface(ICoverSettings)
def test_sections_record_in_registry(self):
self.assertTrue(hasattr(self.settings, 'layouts'))
self.assertIsNotNone(self.settings.layouts)
def test_available_tiles_record_in_registry(self):
self.assertTrue(hasattr(self.settings, 'available_tiles'))
self.assertListEqual(
self.settings.available_tiles, DEFAULT_AVAILABLE_TILES)
def test_searchable_content_types_record_in_registry(self):
self.assertTrue(hasattr(self.settings, 'searchable_content_types'))
self.assertListEqual(self.settings.searchable_content_types,
DEFAULT_SEARCHABLE_CONTENT_TYPES)
def test_styles_record_in_registry(self):
self.assertTrue(hasattr(self.settings, 'styles'))
self.assertSetEqual(
self.settings.styles,
set(['-Default-|tile-default',
'Border|tile-edge',
'Dark Background|tile-dark',
'Shadow|tile-shadow']),
)
def test_grid_system_record_in_registry(self):
self.assertTrue(hasattr(self.settings, 'grid_system'))
self.assertEqual(
self.settings.grid_system, DEFAULT_GRID_SYSTEM)
def test_records_removed_on_uninstall(self):
qi = self.portal['portal_quickinstaller']
with api.env.adopt_roles(['Manager']):
qi.uninstallProducts(products=[PROJECTNAME])
BASE_REGISTRY = 'collective.cover.controlpanel.ICoverSettings.'
records = [
BASE_REGISTRY + 'layouts',
BASE_REGISTRY + 'available_tiles',
BASE_REGISTRY + 'searchable_content_types',
BASE_REGISTRY + 'styles',
BASE_REGISTRY + 'grid_system',
]
for r in records:
self.assertNotIn(r, self.registry)
def test_records_not_overwriten_on_reinstall(self):
"""Test changes are not purged on reinstall.
https://github.com/collective/collective.cover/issues/465
"""
self.settings.styles = set(['foo'])
del self.settings.layouts['Empty layout']
self.assertEqual(len(self.settings.styles), 1)
self.assertEqual(len(self.settings.layouts), 3)
qi = self.portal['portal_quickinstaller']
with api.env.adopt_roles(['Manager']):
qi.reinstallProducts(products=[PROJECTNAME])
self.assertIn('foo', self.settings.styles)
self.assertEqual(len(self.settings.styles), 5)
self.assertIn('Empty layout', self.settings.layouts)
self.assertEqual(len(self.settings.layouts), 4)