source: publico/PortalInterlegis/produtos/il.portalinterlegis/trunk/src/il/portalinterlegis/tests/testintegration.py @ 6495

Última Alteração nesse arquivo desde 6495 foi 6495, incluída por mazza, 9 anos atrás

boxes: com templates Jinja

Usaria o Chameleon, mas ele nao tolera variaveis faltando

File size: 4.8 KB
Linha 
1# -*- coding: utf-8 -*-
2import lxml.html
3import unittest2 as unittest
4from Products.CMFCore.utils import getToolByName
5from zExceptions import NotFound
6
7from fixtures import IL_PORTALINTERLEGIS_INTEGRATION_TESTING
8from il.portalinterlegis.browser.boxes.interfaces import ISimpleBox
9from il.portalinterlegis.browser.boxes.manager import BoxManager
10from il.portalinterlegis.browser.interfaces import \
11     IComunidadeLegislativa, IInformacao, ICapacitacao, ITecnologia, IComunicacao
12
13
14class TestIntegracao(unittest.TestCase):
15
16    layer = IL_PORTALINTERLEGIS_INTEGRATION_TESTING
17
18    def setUp(self):
19        self.app = self.layer['app']
20        self.portal = self.layer['portal']
21        self.qi_tool = getToolByName(self.portal, 'portal_quickinstaller')
22
23    def new_browser(self, path=None, as_admin=False):
24        if as_admin:
25            browser = self.layer.manager_browser()
26        else:
27            browser = self.layer.anonymous_browser()
28        browser.open(self.url(path))
29        return browser
30
31    def dom(self, browser):
32        return lxml.html.fromstring(browser.contents)
33
34    def url(self, path=None):
35        base = self.portal.absolute_url()
36        if path:
37            path.strip('/')
38            return '%s/%s' % (base, path)
39        else:
40            return base
41
42    def test_product_is_installed(self):
43        """ Validate that our products GS profile has been run and the product
44            installed
45        """
46        pid = 'il.portalinterlegis'
47        installed = [p['id'] for p in self.qi_tool.listInstalledProducts()]
48        self.assertTrue(pid in installed,
49                        'package appears not to have been installed')
50
51    def test_tabs_na_home(self):
52        browser = self.layer.anonymous_browser()
53        browser.open(self.url())
54        dom = self.dom(browser)
55        self.assertEqual([u'O Interlegis',
56                          u'Comunidade Legislativa',
57                          u'Informação',
58                          u'Capacitação',
59                          u'Tecnologia',
60                          u'Comunicação',],
61            [li.text_content() for li in dom.cssselect('#portal-globalnav li')])
62
63    def test_homes_marcadas_e_com_layout_home(self):
64        for id, marker in [('comunidade-legislativa', IComunidadeLegislativa),
65                           ('informacao',          IInformacao),
66                           ('capacitacao',         ICapacitacao),
67                           ('tecnologia',          ITecnologia),
68                           ('comunicacao',         IComunicacao),
69                           ]:
70            obj = self.portal[id]
71            self.assertTrue(marker.providedBy(obj))
72            self.assertEqual('home', obj.getLayout())
73
74    def test_box_content_is_empty_before_visiting_form(self):
75        self.assertEqual({}, BoxManager(ISimpleBox).box_content(self.portal, 1))
76
77    def test_using_box_form_creates_box_content(self):
78        context = self.portal
79        boxmanager = BoxManager(ISimpleBox)
80
81        def use_box_form(title, subtitle, text, target, num):
82            browser = self.layer.manager_browser()
83            browser.open(self.url(boxmanager._box_name_for_url(num)))
84            browser.getControl(name='form.widgets.title').value = title
85            browser.getControl(name='form.widgets.subtitle').value = subtitle
86            browser.getControl(name='form.widgets.text').value = text
87            # TODO: nao sei como testar um AutocompleteFieldWidget com o zope.testbrowser (tem javascript)
88            # browser.getControl(label=u'Conteúdo relacionado').value = target
89            browser.getControl(name='form.buttons.apply').click()
90
91        use_box_form('TIT_1', 'SUBTIT_1', 'TEXT_1', 'ALVO_1', 1)
92        use_box_form('TIT_2', 'SUBTIT_2', 'TEXT_2', 'ALVO_2', 2)
93        self.assertEqual({'title': 'TIT_1', 'subtitle': 'SUBTIT_1', 'text': 'TEXT_1', 'target': None},
94                         boxmanager.box_content(context, 1))
95        self.assertEqual({'title': 'TIT_2', 'subtitle': 'SUBTIT_2', 'text': 'TEXT_2', 'target': None},
96                         boxmanager.box_content(context, 2))
97
98    def test_box_forms_numbers_begin_from_1_not_zero(self):
99        with self.assertRaises(NotFound):
100            browser = self.layer.manager_browser()
101            browser.open(self.url(BoxManager(ISimpleBox)._box_name_for_url(0)))
102
103    def test_box_forms_are_limited(self):
104        with self.assertRaises(NotFound):
105            browser = self.layer.manager_browser()
106            browser.open(self.url(BoxManager(ISimpleBox)._box_name_for_url(1000000)))
107
108    def test_box_form_cannot_be_created_after_initialization(self):
109        BoxManager(ISimpleBox).build_form(99) # try to build a box form in an arbitrary moment
110        with self.assertRaises(NotFound):
111            browser = self.layer.manager_browser()
112            browser.open(self.url(BoxManager(ISimpleBox)._box_name_for_url(99)))
Note: Veja TracBrowser para ajuda no uso do navegador do trac.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.