source: products/quintagroup.portlet.cumulus/trunk/quintagroup/portlet/cumulus/tests/test_portlet.py @ 1003

Last change on this file since 1003 was 1003, checked in by koval, 15 years ago

initial import

File size: 4.1 KB
Line 
1from zope.component import getUtility, getMultiAdapter
2
3from plone.portlets.interfaces import IPortletType
4from plone.portlets.interfaces import IPortletManager
5from plone.portlets.interfaces import IPortletAssignment
6from plone.portlets.interfaces import IPortletDataProvider
7from plone.portlets.interfaces import IPortletRenderer
8
9from plone.app.portlets.storage import PortletAssignmentMapping
10
11from quintagroup.portlet.cumulus import cumulusportlet
12
13from quintagroup.portlet.cumulus.tests.base import TestCase
14
15
16class TestPortlet(TestCase):
17
18    def afterSetUp(self):
19        self.setRoles(('Manager', ))
20
21    def test_portlet_type_registered(self):
22        portlet = getUtility(
23            IPortletType,
24            name='quintagroup.portlet.cumulus.CumulusPortlet')
25        self.assertEquals(portlet.addview,
26                          'quintagroup.portlet.cumulus.CumulusPortlet')
27
28    def test_interfaces(self):
29        # TODO: Pass any keyword arguments to the Assignment constructor
30        portlet = cumulusportlet.Assignment()
31        self.failUnless(IPortletAssignment.providedBy(portlet))
32        self.failUnless(IPortletDataProvider.providedBy(portlet.data))
33
34    def test_invoke_add_view(self):
35        portlet = getUtility(
36            IPortletType,
37            name='quintagroup.portlet.cumulus.CumulusPortlet')
38        mapping = self.portal.restrictedTraverse(
39            '++contextportlets++plone.leftcolumn')
40        for m in mapping.keys():
41            del mapping[m]
42        addview = mapping.restrictedTraverse('+/' + portlet.addview)
43
44        # TODO: Pass a dictionary containing dummy form inputs from the add
45        # form.
46        # Note: if the portlet has a NullAddForm, simply call
47        # addview() instead of the next line.
48        addview.createAndAdd(data={})
49
50        self.assertEquals(len(mapping), 1)
51        self.failUnless(isinstance(mapping.values()[0],
52                                   cumulusportlet.Assignment))
53
54    def test_invoke_edit_view(self):
55        # NOTE: This test can be removed if the portlet has no edit form
56        mapping = PortletAssignmentMapping()
57        request = self.folder.REQUEST
58
59        mapping['foo'] = cumulusportlet.Assignment()
60        editview = getMultiAdapter((mapping['foo'], request), name='edit')
61        self.failUnless(isinstance(editview, cumulusportlet.EditForm))
62
63    def test_obtain_renderer(self):
64        context = self.folder
65        request = self.folder.REQUEST
66        view = self.folder.restrictedTraverse('@@plone')
67        manager = getUtility(IPortletManager, name='plone.rightcolumn',
68                             context=self.portal)
69
70        # TODO: Pass any keyword arguments to the Assignment constructor
71        assignment = cumulusportlet.Assignment()
72
73        renderer = getMultiAdapter(
74            (context, request, view, manager, assignment), IPortletRenderer)
75        self.failUnless(isinstance(renderer, cumulusportlet.Renderer))
76
77
78class TestRenderer(TestCase):
79
80    def afterSetUp(self):
81        self.setRoles(('Manager', ))
82
83    def renderer(self, context=None, request=None, view=None, manager=None,
84                 assignment=None):
85        context = context or self.folder
86        request = request or self.folder.REQUEST
87        view = view or self.folder.restrictedTraverse('@@plone')
88        manager = manager or getUtility(
89            IPortletManager, name='plone.rightcolumn', context=self.portal)
90
91        # TODO: Pass any default keyword arguments to the Assignment
92        # constructor.
93        assignment = assignment or cumulusportlet.Assignment()
94        return getMultiAdapter((context, request, view, manager, assignment),
95                               IPortletRenderer)
96
97    def test_render(self):
98        # TODO: Pass any keyword arguments to the Assignment constructor.
99        r = self.renderer(context=self.portal,
100                          assignment=cumulusportlet.Assignment())
101        r = r.__of__(self.folder)
102        r.update()
103        output = r.render()
104        # TODO: Test output
105
106
107def test_suite():
108    from unittest import TestSuite, makeSuite
109    suite = TestSuite()
110    suite.addTest(makeSuite(TestPortlet))
111    suite.addTest(makeSuite(TestRenderer))
112    return suite
Note: See TracBrowser for help on using the repository browser.