Exemplo n.º 1
0
    def test_cancel_meeting(self, browser):
        self.login(self.committee_responsible, browser)
        self.assertEquals(u'pending', self.meeting.model.workflow_state)
        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Cancel').click()

        self.assertEquals(u'cancelled', self.meeting.model.workflow_state)
Exemplo n.º 2
0
    def test_closing_meeting_with_unreturned_excerpts_is_not_allowed(self, browser):
        """The user must decide all agenda items before the meeting can be closed.
        """
        self.login(self.committee_responsible, browser)
        agendaitem = self.schedule_proposal(self.meeting, self.submitted_proposal)
        agendaitem.decide()
        self.assertEquals(u'held', self.meeting.model.workflow_state)

        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Close meeting').click()
        self.assertEquals(
            {u'messages': [
                {u'messageTitle': u'Error',
                 u'message': u'The meeting cannot be closed because it'
                 u' has undecided agenda items.',
                 u'messageClass': u'error'}],
             u'proceed': False},
            browser.json)

        self.assertEquals(u'held', self.meeting.model.workflow_state)

        excerpt = agendaitem.generate_excerpt("Foo")
        agendaitem.return_excerpt(excerpt)

        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Close meeting').click()
        self.assertEquals(u'closed', self.meeting.model.workflow_state)
Exemplo n.º 3
0
 def deactivate(self, dossier, browser, use_editbar=False):
     if use_editbar:
         browser.open(dossier)
         editbar.menu_option('Actions', 'dossier-transition-deactivate').click()
     else:
         browser.open(dossier, view='transition-deactivate',
                      send_authenticator=True)
Exemplo n.º 4
0
    def test_closing_meeting_with_unreturned_excerpts_is_not_allowed(
            self, browser):
        """The user must decide all agenda items before the meeting can be closed.
        """
        self.login(self.committee_responsible, browser)
        agendaitem = self.schedule_proposal(self.meeting,
                                            self.submitted_proposal)
        agendaitem.decide()
        self.assertEquals(u'held', self.meeting.model.workflow_state)

        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Close meeting').click()
        self.assertEquals(
            {
                u'messages':
                [{
                    u'messageTitle': u'Error',
                    u'message': u'The meeting cannot be closed because it'
                    u' has undecided agenda items.',
                    u'messageClass': u'error'
                }],
                u'proceed':
                False
            }, browser.json)

        self.assertEquals(u'held', self.meeting.model.workflow_state)

        excerpt = agendaitem.generate_excerpt("Foo")
        agendaitem.return_excerpt(excerpt)

        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Close meeting').click()
        self.assertEquals(u'closed', self.meeting.model.workflow_state)
Exemplo n.º 5
0
    def test_cancel_meeting(self, browser):
        self.login(self.committee_responsible, browser)
        self.assertEquals(u'pending', self.meeting.model.workflow_state)
        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Cancel').click()

        self.assertEquals(u'cancelled', self.meeting.model.workflow_state)
Exemplo n.º 6
0
    def test_adding_is_not_available_in_inactive_committee(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.empty_committee)

        self.assertEqual([u'Add new', u'Actions'], editbar.menus())

        editbar.menu_option('Actions', 'deactivate').click()
        self.assertEqual([u'Actions'], editbar.menus())
Exemplo n.º 7
0
    def test_adding_is_not_available_in_inactive_committee(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.empty_committee)

        self.assertEqual([u'Add new', u'Actions'], editbar.menus())

        editbar.menu_option('Actions', 'deactivate').click()
        self.assertEqual([u'Actions'], editbar.menus())
Exemplo n.º 8
0
    def test_sets_end_date_to_current_date(self, browser):
        self.login(self.secretariat_user, browser)
        with freeze(datetime(2016, 3, 29)):
            browser.open(self.empty_dossier)
            editbar.menu_option('Actions',
                                'dossier-transition-deactivate').click()

        self.assertEqual(date(2016, 3, 29), IDossier(self.empty_dossier).end)
Exemplo n.º 9
0
    def test_active_committee_can_be_deactivated(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.empty_committee)

        editbar.menu_option('Actions', 'deactivate').click()

        self.assertEqual(Committee.STATE_INACTIVE,
                         self.empty_committee.load_model().get_state())
        statusmessages.assert_message('Committee deactivated successfully')
Exemplo n.º 10
0
    def test_active_committee_can_be_deactivated(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.empty_committee)

        editbar.menu_option('Actions', 'deactivate').click()

        self.assertEqual(Committee.STATE_INACTIVE,
                         self.empty_committee.load_model().get_state())
        statusmessages.assert_message('Committee deactivated successfully')
Exemplo n.º 11
0
 def test_recursively_deactivate_subdossier(self, browser):
     self.login(self.secretariat_user, browser)
     subdossier = create(Builder('dossier').within(self.empty_dossier))
     browser.open(self.empty_dossier)
     editbar.menu_option('Actions', 'dossier-transition-deactivate').click()
     statusmessages.assert_no_error_messages()
     self.assert_workflow_state('dossier-state-inactive',
                                self.empty_dossier)
     self.assert_workflow_state('dossier-state-inactive', subdossier)
Exemplo n.º 12
0
 def deactivate(self, dossier, browser, use_editbar=False):
     if use_editbar:
         browser.open(dossier)
         editbar.menu_option('Actions',
                             'dossier-transition-deactivate').click()
     else:
         browser.open(dossier,
                      view='transition-deactivate',
                      send_authenticator=True)
Exemplo n.º 13
0
    def test_deactivating_is_not_possible_when_pending_meetings_exists(
            self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.committee)

        editbar.menu_option('Actions', 'deactivate').click()

        self.assertEqual(Committee.STATE_ACTIVE,
                         self.committee.load_model().get_state())
        statusmessages.assert_message('Not all meetings are closed.')
Exemplo n.º 14
0
    def test_deactivating_is_not_possible_when_pending_meetings_exists(
            self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.committee)

        editbar.menu_option('Actions', 'deactivate').click()

        self.assertEqual(Committee.STATE_ACTIVE,
                         self.committee.load_model().get_state())
        statusmessages.assert_message('Not all meetings are closed.')
Exemplo n.º 15
0
    def test_shows_warning_message_committee_closed(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.empty_committee)
        editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.dossier_responsible, browser)
        browser.open(self.draft_proposal)

        self.assertEqual(
            [u'The committee Kommission f\xfcr Verkehr is no longer active.'],
            warning_messages())
    def test_list_only_active_committees_by_default(self, browser):
        with self.login(self.committee_responsible, browser):
            browser.open(self.empty_committee)
            editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.meeting_user, browser)
        browser.open(self.committee_container,
                     view='tabbedview_view-committees')
        self.assertEquals(
            [u'Rechnungspr\xfcfungskommission'],
            browser.css('#committees_view .committee_box h2').text)
Exemplo n.º 17
0
    def test_meeting_with_agenda_items_cannot_be_cancelled(self, browser):
        self.login(self.committee_responsible, browser)
        self.schedule_proposal(self.meeting, self.submitted_proposal)
        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Cancel').click()

        self.assertDictContainsSubset({
            'message': "The meeting already has agenda items and can't "
                       "be cancelled",
            'messageClass': 'error'},
            browser.json.get('messages')[0])
    def test_list_only_active_committees_by_default(self, browser):
        with self.login(self.committee_responsible, browser):
            browser.open(self.empty_committee)
            editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.meeting_user, browser)
        browser.open(self.committee_container,
                     view='tabbedview_view-committees')
        self.assertEquals(
            [u'Rechnungspr\xfcfungskommission'],
            browser.css('#committees_view .committee_box h2').text)
Exemplo n.º 19
0
    def test_menu_option_not_found(self, browser):
        self.grant('Manager')
        browser.login().open()
        with self.assertRaises(NoElementFound) as cm:
            editbar.menu_option('Add new', 'Dog', browser=browser)

        self.assertEquals(
            "Empty result set: editbar.menu_option('Add new', 'Dog',"
            " browser=<ftw.browser.core.Browser instance>)"
            " did not match any nodes."
            "\nOptions in menu 'Add new': ['Collection', 'DXType', 'Event',"
            " 'File', 'Folder', 'Image', 'Link', 'News Item', 'Page']",
            str(cm.exception))
Exemplo n.º 20
0
    def test_recursively_activates_subdossier(self, browser):
        self.login(self.secretariat_user, browser)
        self.set_workflow_state(
            'dossier-state-inactive',
            self.dossier, self.subdossier, self.subdossier2)

        browser.open(self.dossier)
        editbar.menu_option('Actions', 'dossier-transition-activate').click()
        statusmessages.assert_message('The Dossier has been activated')

        self.assert_workflow_state('dossier-state-active', self.dossier)
        self.assert_workflow_state('dossier-state-active', self.subdossier)
        self.assert_workflow_state('dossier-state-active', self.subdossier2)
    def test_list_all_committees_when_selecting_all_filter(self, browser):
        with self.login(self.committee_responsible, browser):
            browser.open(self.empty_committee)
            editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.meeting_user, browser)
        browser.open(self.committee_container,
                     view='tabbedview_view-committees',
                     data={'committee_state_filter': 'filter_all'})

        self.assertEquals(
            [u'Kommission f\xfcr Verkehr', u'Rechnungspr\xfcfungskommission'],
            browser.css('#committees_view .committee_box h2').text)
Exemplo n.º 22
0
    def test_meeting_with_agenda_items_cannot_be_cancelled(self, browser):
        self.login(self.committee_responsible, browser)
        self.schedule_proposal(self.meeting, self.submitted_word_proposal)
        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Cancel').click()

        self.assertDictContainsSubset(
            {
                'message': "The meeting already has agenda items and can't "
                "be cancelled",
                'messageClass': 'error'
            },
            browser.json.get('messages')[0])
    def test_zip_export_link_on_meeting_view(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Export as Zip').click()

        zip_file = ZipFile(StringIO(browser.contents), 'r')

        self.assertIsNone(zip_file.testzip(),
                          'Got a invalid zip file.')
        self.assertEquals(
            '9. Sitzung der Rechnungsprufungskommission.zip',
            cgi.parse_header(browser.headers['content-disposition'])[1]['filename'],
            'Wrong zip filename.')
    def test_list_all_committees_when_selecting_all_filter(self, browser):
        with self.login(self.committee_responsible, browser):
            browser.open(self.empty_committee)
            editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.meeting_user, browser)
        browser.open(self.committee_container,
                     view='tabbedview_view-committees',
                     data={'committee_state_filter': 'filter_all'})

        self.assertEquals(
            [u'Kommission f\xfcr Verkehr',
             u'Rechnungspr\xfcfungskommission'],
            browser.css('#committees_view .committee_box h2').text)
Exemplo n.º 25
0
    def test_deactivating_not_possible_when_unscheduled_proposals_exist(
            self, browser):
        self.login(self.committee_responsible, browser)
        create(
            Builder('proposal').within(self.dossier).having(
                title=u'Non-scheduled proposal',
                committee=self.empty_committee.load_model()).as_submitted())
        browser.open(self.empty_committee)

        editbar.menu_option('Actions', 'deactivate').click()

        self.assertEqual(Committee.STATE_ACTIVE,
                         self.committee.load_model().get_state())
        statusmessages.assert_message(
            'There are unscheduled proposals submitted to this committee.')
    def test_committe_box_has_state_class(self, browser):
        with self.login(self.committee_responsible, browser):
            browser.open(self.empty_committee)
            editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.meeting_user, browser)
        browser.open(self.committee_container,
                     view='tabbedview_view-committees',
                     data={'committee_state_filter': 'filter_all'})

        self.assertEquals(
            'committee_box inactive',
            browser.css('#committees_view .committee_box')[0].get('class'))
        self.assertEquals(
            'committee_box active',
            browser.css('#committees_view .committee_box')[1].get('class'))
Exemplo n.º 27
0
    def test_resets_end_dates_recursively(self, browser):
        self.login(self.secretariat_user, browser)
        IDossier(self.dossier).end = date(2013, 2, 21)
        IDossier(self.subdossier).end = date(2013, 2, 21)
        self.set_workflow_state(
            'dossier-state-inactive',
            self.dossier, self.subdossier, self.subdossier2)
        self.assertIsNotNone(IDossier(self.dossier).end)
        self.assertIsNotNone(IDossier(self.subdossier).end)

        browser.open(self.dossier)
        editbar.menu_option('Actions', 'dossier-transition-activate').click()
        self.assert_workflow_state('dossier-state-active', self.dossier)
        self.assert_workflow_state('dossier-state-active', self.subdossier)
        self.assertIsNone(IDossier(self.dossier).end)
        self.assertIsNone(IDossier(self.subdossier).end)
    def test_committe_box_has_state_class(self, browser):
        with self.login(self.committee_responsible, browser):
            browser.open(self.empty_committee)
            editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.meeting_user, browser)
        browser.open(self.committee_container,
                     view='tabbedview_view-committees',
                     data={'committee_state_filter': 'filter_all'})

        self.assertEquals(
            'committee_box inactive',
            browser.css('#committees_view .committee_box')[0].get('class'))
        self.assertEquals(
            'committee_box active',
            browser.css('#committees_view .committee_box')[1].get('class'))
Exemplo n.º 29
0
 def test_menu_option(self, browser):
     self.grant('Manager')
     browser.login().open()
     link = editbar.menu_option('Display', 'Summary view', browser=browser)
     self.assertEquals('plone-contentmenu-display-summary_view',
                       link.attrib.get('id'))
     self.assertEquals('a', link.tag)
Exemplo n.º 30
0
    def test_deactivating_not_possible_when_unscheduled_proposals_exist(
            self, browser):
        self.login(self.committee_responsible, browser)
        create(
            Builder('proposal').within(self.dossier)
            .having(title=u'Non-scheduled proposal',
                    committee=self.empty_committee.load_model())
            .as_submitted())
        browser.open(self.empty_committee)

        editbar.menu_option('Actions', 'deactivate').click()

        self.assertEqual(Committee.STATE_ACTIVE,
                         self.committee.load_model().get_state())
        statusmessages.assert_message(
            'There are unscheduled proposals submitted to this committee.')
Exemplo n.º 31
0
    def test_shows_discreet_transition_button_committee_closed(self, browser):
        self.login(self.committee_responsible, browser)
        browser.open(self.empty_committee)
        editbar.menu_option('Actions', 'deactivate').click()

        self.login(self.dossier_responsible, browser)
        browser.open(self.draft_proposal, view='tabbedview_view-overview')

        self.assertEqual(
            [
                'proposal-transition-cancel', 'proposal-transition-submit',
                'Comment'
            ],
            browser.css('.actionButtons .regular_buttons li').text)
        self.assertEqual(
            ['proposal-transition-cancel', 'Comment'],
            browser.css('.actionButtons .regular_buttons li a').text)
Exemplo n.º 32
0
    def test_closing_meeting_with_undecided_items_is_not_allowed(self, browser):
        """The user must decide all agenda items before the meeting can be closed.
        """
        self.login(self.committee_responsible, browser)
        self.schedule_ad_hoc(self.meeting, "Ad hoc proposal")
        self.assertEquals(u'pending', self.meeting.model.workflow_state)

        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Close meeting').click()
        self.assertEquals(
            {u'messages': [
                {u'messageTitle': u'Error',
                 u'message': u'The meeting cannot be closed because it'
                 u' has undecided agenda items.',
                 u'messageClass': u'error'}],
             u'proceed': False},
            browser.json)

        self.assertEquals(u'pending', self.meeting.model.workflow_state)
Exemplo n.º 33
0
    def test_menu_option_menu_not_found(self, browser):
        self.grant('Manager')
        browser.login().open()
        with self.assertRaises(NoElementFound) as cm:
            editbar.menu_option('Shapes', 'Square', browser=browser)

        if IS_PLONE_4:
            self.assertEquals(
                "Empty result set: editbar.menu_option('Shapes', 'Square',"
                " browser=<ftw.browser.core.Browser instance>)"
                " did not match any nodes."
                "\nVisible menus: [u'Add new', u'Display'].",
                str(cm.exception))
        else:
            self.assertEquals(
                "Empty result set: editbar.menu_option('Shapes', 'Square',"
                " browser=<ftw.browser.core.Browser instance>)"
                " did not match any nodes."
                "\nVisible menus: [u'Add new', u'Display', u'Manage portlets'].",
                str(cm.exception))
Exemplo n.º 34
0
    def test_revoke_action_points_to_revoke_permissions_view(self, browser):
        self.login(self.dossier_responsible, browser)
        self.set_workflow_state('task-state-tested-and-closed', self.subtask)

        browser.open(self.subtask)
        revoke_action = editbar.menu_option('Actions', "Revoke permissions")
        action_url = urlparse(revoke_action.get("href"))

        self.assertEqual(
            "/".join(
                [self.subtask.absolute_url_path(), '@@revoke_permissions']),
            action_url.path)
Exemplo n.º 35
0
    def test_closing_meeting_with_undecided_items_is_not_allowed(
            self, browser):
        """The user must decide all agenda items before the meeting can be closed.
        """
        self.login(self.committee_responsible, browser)
        self.schedule_ad_hoc(self.meeting, "Ad hoc proposal")
        self.assertEquals(u'pending', self.meeting.model.workflow_state)

        browser.open(self.meeting)
        editbar.menu_option('Actions', 'Close meeting').click()
        self.assertEquals(
            {
                u'messages':
                [{
                    u'messageTitle': u'Error',
                    u'message': u'The meeting cannot be closed because it'
                    u' has undecided agenda items.',
                    u'messageClass': u'error'
                }],
                u'proceed':
                False
            }, browser.json)

        self.assertEquals(u'pending', self.meeting.model.workflow_state)
 def test_close_transition_closes_meeting(self, browser):
     self.login(self.committee_responsible, browser)
     self.assertEquals('pending', self.meeting.model.get_state().name)
     browser.open(self.meeting)
     editbar.menu_option('Actions', 'Close meeting').click()
     self.assertEquals('closed', self.meeting.model.get_state().name)
Exemplo n.º 37
0
 def test_reopen_closed_meeting(self, browser):
     self.login(self.committee_responsible, browser)
     self.assertEquals(u'closed', self.decided_meeting.model.workflow_state)
     browser.open(self.decided_meeting)
     editbar.menu_option('Actions', 'Reopen').click()
     self.assertEquals(u'held', self.decided_meeting.model.workflow_state)
Exemplo n.º 38
0
 def test_reopen_closed_meeting(self, browser):
     self.login(self.committee_responsible, browser)
     self.assertEquals(u'closed', self.decided_meeting.model.workflow_state)
     browser.open(self.decided_meeting)
     editbar.menu_option('Actions', 'Reopen').click()
     self.assertEquals(u'held', self.decided_meeting.model.workflow_state)