source: products/quintagroup.referencedatagridfield/branches/plone4/quintagroup/referencedatagridfield/tests/testPopup.py @ 2350

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

Added tests for pupup related staff in edit mode of ReferenceDataGridWidget?

  • Property svn:eol-style set to native
File size: 2.4 KB
Line 
1import re
2import unittest
3
4from zope.publisher.browser import TestRequest
5from zope.formlib.namedtemplate import INamedTemplate
6from zope.component import queryAdapter, queryMultiAdapter
7
8from Products.Five import BrowserView
9
10from Products.PloneTestCase.PloneTestCase import portal_owner
11from Products.PloneTestCase.PloneTestCase import default_password
12
13from quintagroup.referencedatagridfield import ReferenceDataGridWidget
14from quintagroup.referencedatagridfield.tests.base import TestCase
15from quintagroup.referencedatagridfield.tests.base import FunctionalTestCase
16
17
18class TestPopupRegistrations(TestCase):
19    """Test popup related adapters registration."""
20
21    def afterSetUp(self):
22        self.req = TestRequest()
23
24    def test_CustomNamedTemplate(self):
25        view = BrowserView(self.portal, self.req)
26        custom_named_template = queryAdapter(view, INamedTemplate, name="datagridref_popup")
27        self.assertNotEqual(custom_named_template, None)
28       
29    def test_RefDataGridBrowser_popup(self):
30        popup_page = queryMultiAdapter((object(), self.req), name="refdatagridbrowser_popup")
31        self.assertNotEqual(popup_page, None)
32
33    def test_WidgetBindToNamedTemplate(self):
34        rdgw_props = ReferenceDataGridWidget._properties
35        self.assertEqual(rdgw_props.get("popup_name", ""), "datagridref_popup")
36
37
38class TestPopupRelatedStaff(FunctionalTestCase):
39    """Test pupup related staff in edit mode of ReferenceDataGridWidget."""
40
41    def testAddReferenceButton(self):
42        self.loginAsPortalOwner()
43        # Prepare testing data and data for functional test
44        self.createDemo()
45        self.demo.edit(demo_rdgf=[{"link": "http://google.com"}])
46        html = self.publish("/%s/edit" % self.demo.absolute_url(1),
47                            portal_owner+':'+default_password).getBody()
48        # Get Add... button
49        rebutt = re.compile("<input\s+[^>]*type=\"button\"\s*[^>]*>", re.S)
50        add_button = filter(lambda k:not "_new" in k, rebutt.findall(html))[0]
51        src = re.search("src=\"([^\"]*)\"", add_button).groups()[0]
52        # src url must points to refdatagridbrowser_popup view
53        url = self.demo.absolute_url() + '/refdatagridbrowser_popup?'
54        self.assertEqual(src.startswith(url), True)
55
56
57def test_suite():
58    return unittest.TestSuite([
59        unittest.makeSuite(TestPopupRegistrations),
60        unittest.makeSuite(TestPopupRelatedStaff),
61        ])
Note: See TracBrowser for help on using the repository browser.