-
Notifications
You must be signed in to change notification settings - Fork 2
/
test_portlet.py
132 lines (105 loc) · 5.06 KB
/
test_portlet.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
132
import unittest2 as unittest
from zope.component import getUtility, getMultiAdapter
from plone.portlets.interfaces import IPortletType
from plone.portlets.interfaces import IPortletManager
from plone.portlets.interfaces import IPortletAssignment
from plone.portlets.interfaces import IPortletDataProvider
from plone.portlets.interfaces import IPortletRenderer
from plone.app.portlets.storage import PortletAssignmentMapping
from collective.portlet.embed import portlet
from collective.portlet.embed.tests.base import IntegrationTestCase
class TestPortlet(IntegrationTestCase):
def test_portlet_type_registered(self):
portlet_embed = getUtility(
IPortletType,
name='collective.portlet.embed.Embed')
self.assertEquals(portlet_embed.addview,
'collective.portlet.embed.Embed')
def test_interfaces(self):
# TODO: Pass any keyword arguments to the Assignment constructor
portlet_embed = portlet.Assignment()
self.failUnless(IPortletAssignment.providedBy(portlet_embed))
self.failUnless(IPortletDataProvider.providedBy(portlet_embed.data))
def test_invoke_add_view(self):
portlet_embed = getUtility(
IPortletType,
name='collective.portlet.embed.Embed'
)
name = '++contextportlets++plone.leftcolumn'
mapping = self.portal.restrictedTraverse(name)
for m in mapping.keys():
del mapping[m]
addview = mapping.restrictedTraverse('+/' + portlet_embed.addview)
# TODO: Pass a dictionary containing dummy form inputs from the add
# form.
# Note: if the portlet has a NullAddForm, simply call
# addview() instead of the next line.
addview.createAndAdd(data={})
self.assertEquals(len(mapping), 1)
self.failUnless(isinstance(mapping.values()[0],
portlet.Assignment))
def test_invoke_edit_view(self):
# NOTE: This test can be removed if the portlet has no edit form
mapping = PortletAssignmentMapping()
request = self.folder.REQUEST
mapping['foo'] = portlet.Assignment()
editview = getMultiAdapter((mapping['foo'], request), name='edit')
self.failUnless(isinstance(editview, portlet.EditForm))
def test_obtain_renderer(self):
context = self.folder
request = self.folder.REQUEST
view = self.folder.restrictedTraverse('@@plone')
manager = getUtility(IPortletManager, name='plone.rightcolumn',
context=self.portal)
# TODO: Pass any keyword arguments to the Assignment constructor
assignment = portlet.Assignment()
renderer = getMultiAdapter(
(context, request, view, manager, assignment), IPortletRenderer)
self.failUnless(isinstance(renderer, portlet.Renderer))
def test_correct_css_class_if_not_set(self):
context = self.folder
request = self.folder.REQUEST
view = self.folder.restrictedTraverse('@@plone')
manager = getUtility(IPortletManager, name='plone.rightcolumn',
context=self.portal)
assignment = portlet.Assignment(header='Header')
renderer = getMultiAdapter(
(context, request, view, manager, assignment), IPortletRenderer)
self.assertEqual(renderer.css_class(), 'portlet-embed-header')
def test_correct_css_class_if_set(self):
context = self.folder
request = self.folder.REQUEST
view = self.folder.restrictedTraverse('@@plone')
manager = getUtility(IPortletManager, name='plone.rightcolumn',
context=self.portal)
assignment = portlet.Assignment(
header='Header',
portlet_class='test-class',
)
renderer = getMultiAdapter(
(context, request, view, manager, assignment), IPortletRenderer)
self.assertEqual(renderer.css_class(),
'portlet-embed-header test-class')
class TestRenderer(IntegrationTestCase):
def renderer(self, context=None, request=None, view=None, manager=None,
assignment=None):
context = context or self.folder
request = request or self.folder.REQUEST
view = view or self.folder.restrictedTraverse('@@plone')
manager = manager or getUtility(
IPortletManager, name='plone.rightcolumn', context=self.portal)
# TODO: Pass any default keyword arguments to the Assignment
# constructor.
assignment = assignment or portlet.Assignment()
return getMultiAdapter((context, request, view, manager, assignment),
IPortletRenderer)
def test_render(self):
# TODO: Pass any keyword arguments to the Assignment constructor.
r = self.renderer(context=self.portal,
assignment=portlet.Assignment())
r = r.__of__(self.folder)
r.update()
# output = r.render()
# TODO: Test output
def test_suite():
return unittest.defaultTestLoader.loadTestsFromName(__name__)