def test_update_paragraph_order(self, browser):
        self.login(self.dossier_responsible, browser=browser)

        self.assertEquals(
            ['paragraphtemplate-1',
             'paragraphtemplate-2',
             'paragraphtemplate-3'],
            self.meeting_template.objectIds())
        for item in self.meeting_template.objectIds():
            self.assertIsInstance(item, str)

        new_order = ['paragraphtemplate-2',
                     'paragraphtemplate-1',
                     'paragraphtemplate-3']

        browser.open(self.meeting_template,
                     view='update_content_order',
                     data={
                         'sortOrder': json.dumps(new_order),
                         '_authenticator': createToken(),
                     })
        statusmessages.assert_no_error_messages()

        self.assertEquals(
            new_order,
            [paragraph.getId() for paragraph in self.meeting_template.get_paragraphs()])
        for item in self.meeting_template.objectIds():
            self.assertIsInstance(item, str)
Пример #2
0
    def test_inviting_a_user_by_userid(self, browser):
        self.portal.portal_properties.email_from_name = 'M\xc3\xa4i Site'
        user = create(Builder('user').named('H\xc3\xbcgo', 'Boss'))
        self.assertEquals([], self.get_invitations(user=user))

        browser.login().visit(self.folder, view='invite_participants')
        browser.fill({'Users': [user.getId()],
                      'Roles': ['Contributor'],
                      'Comment': u'Hi th\xf6re'})
        browser.find('Invite').click()
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message(
            'The invitation mails were sent to [email protected].')

        self.assertEquals(1, len(self.get_invitations(email='*****@*****.**')),
                          'Expected one invitation to be available for [email protected]')
        invitation, = self.get_invitations(email='*****@*****.**')
        self.assertEquals(['Contributor'], invitation.roles)
        mail = Mailing(self.portal).pop()
        self.assertIn('From: =?utf-8?q?M=C3=A4i_Site?= <test@localhost>', mail)
        self.assertIn('To: [email protected]', mail)
        self.assertIn('Content-Type: text/plain; charset="utf-8"', mail)
        self.assertIn('Content-Type: text/html; charset="utf-8"', mail)
        self.assertIn('=?utf-8?q?Invitation_for_paticipating_in_F=C3=B6lder?=',
                      mail)
        self.assertIn('Hi th=C3=B6re', mail)
    def test_no_proposal_excerpt_document_link_if_no_permission(self, browser):
        self.login(self.committee_responsible, browser)
        agenda_item = self.schedule_proposal(self.meeting, self.submitted_proposal)
        agenda_item.decide()
        excerpt_document = agenda_item.generate_excerpt(title='The Excerpt')
        agenda_item.return_excerpt(excerpt_document)

        self.login(self.committee_responsible, browser)
        browser.open(self.submitted_proposal, view='tabbedview_view-overview')
        statusmessages.assert_no_error_messages()
        self.assertEquals(excerpt_document.absolute_url(), browser.css('a.document_link')[2].attrib['href'])

        self.login(self.dossier_responsible, browser)
        self.meeting_dossier.__ac_local_roles_block__ = True
        self.meeting_dossier.reindexObjectSecurity()

        self.login(self.committee_responsible, browser)
        browser.open(self.submitted_proposal, view='tabbedview_view-overview')
        statusmessages.assert_no_error_messages()
        expected_listing = [
            ['Title', u'Vertr\xe4ge'],
            ['Description', u'F\xfcr weitere Bearbeitung bewilligen'],
            ['Dossier', u'Vertr\xe4ge mit der kantonalen Finanzverwaltung'],
            ['Committee', u'Rechnungspr\xfcfungskommission'],
            ['Meeting', u'9. Sitzung der Rechnungspr\xfcfungskommission'],
            ['Issuer', 'Ziegler Robert (robert.ziegler)'],
            ['Proposal document', u'Vertr\xe4ge'],
            ['State', 'Decided'],
            ['Decision number', '2016 / 2'],
            ['Attachments', u'Vertr\xe4gsentwurf'],
            ['Excerpt', 'The Excerpt'],
        ]
        self.assertEqual(expected_listing, browser.css('table.listing').first.lists())
Пример #4
0
 def test_security_view_access(self, browser):
     for user in (self.workspace_owner, self.workspace_admin,
                  self.workspace_member, self.workspace_guest):
         locals()['__traceback_info__'] = user
         with self.login(user, browser):
             browser.open(self.workspace_folder)
             assert_no_error_messages()
Пример #5
0
    def test_proposal_can_be_submitted_without_permission_on_commitee(
            self, browser):
        self.login(self.dossier_responsible, browser)
        # https://github.com/4teamwork/opengever.ftw/issues/41
        self.assertFalse(getSecurityManager().checkPermission(
            'View', self.draft_proposal.get_committee()))
        self.assertEqual(Proposal.STATE_PENDING,
                         self.draft_proposal.get_state())
        browser.visit(self.draft_proposal, view='tabbedview_view-overview')
        browser.click_on("proposal-transition-submit")
        browser.click_on("Confirm")
        self.assertEqual(Proposal.STATE_SUBMITTED,
                         self.draft_proposal.get_state())
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message('Review state changed successfully.')
        self.assertEqual('proposal-state-submitted',
                         api.content.get_state(self.draft_proposal))

        self.login(self.administrator)
        model = self.draft_proposal.load_model()
        submitted_proposal = model.resolve_submitted_proposal()
        proposal_file = self.draft_proposal.get_proposal_document().file
        submitted_proposal_file = submitted_proposal.get_proposal_document(
        ).file
        with proposal_file.open() as expected:
            with submitted_proposal_file.open() as got:
                self.assertEquals(expected.read(), got.read())
 def test_meeting_can_be_exported_to_zip_when_agenda_item_list_template_is_missing(self, browser):
     self.login(self.committee_responsible, browser)
     self.committee.agendaitem_list_template = None
     self.committee_container.agendaitem_list_template = None
     browser.open(self.meeting, view='export-meeting-zip')
     statusmessages.assert_no_error_messages()
     self.assertEquals('application/zip', browser.contenttype)
    def test_submitted_proposal_can_be_rejected(self, browser):
        self.login(self.committee_responsible, browser)
        model = self.proposal.load_model()
        self.assertEqual(
            'opengever-meeting-committeecontainer/committee-1/submitted-proposal-1',
            model.submitted_physical_path)
        self.assertEqual(Proposal.STATE_SUBMITTED, self.proposal.get_state())
        self.assert_workflow_state('proposal-state-submitted', self.proposal)
        self.assertIsNotNone(self.proposal.date_of_submission)

        browser.visit(self.submitted_proposal, view='tabbedview_view-overview')
        browser.click_on('Reject')
        browser.fill({'Comment': u'Bitte \xfcberarbeiten'}).submit()
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message(u'The proposal has been rejected successfully')

        self.assertIsNone(model.submitted_physical_path)
        self.assertIsNone(model.submitted_int_id)
        self.assertIsNone(model.submitted_admin_unit_id)
        self.assertIsNone(model.date_of_submission)
        self.assertEqual(Proposal.STATE_PENDING, self.proposal.get_state())
        self.assertIsNone(self.proposal.date_of_submission)
        self.assert_workflow_state('proposal-state-active', self.proposal)
        with self.assertRaises(KeyError):
            self.submitted_proposal
Пример #8
0
    def test_proposal_can_be_created_in_browser_and_strips_whitespace(
            self, browser):
        self.login(self.dossier_responsible, browser)
        browser.open(self.dossier)
        factoriesmenu.add('Proposal')
        browser.fill({
            'Title': u'A pr\xf6posal',
            'Committee': u'Rechnungspr\xfcfungskommission',
            'Proposal template': u'Geb\xfchren',
            'Attachments': [self.document],
        }).save()
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message('Item created')

        proposal = browser.context
        self.assertEqual(1, len(proposal.relatedItems))
        self.assertEqual(self.document, proposal.relatedItems[0].to_object)
        self.assertEqual(u'A pr\xf6posal', proposal.title)

        model = proposal.load_model()
        self.assertIsNotNone(model)
        self.assertEqual(u'A pr\xf6posal', model.title)
        self.assertIsNone(model.submitted_title)
        self.assertEqual(Oguid.for_object(proposal), model.oguid)
        self.assertEqual('robert.ziegler', model.creator)
        self.assertEqual(u'Vertr\xe4ge und Vereinbarungen',
                         model.repository_folder_title)
        self.assertEqual(u'en', model.language)

        self.assertTrue(
            set(['a', 'proposal'
                 ]).issubset(set(index_data_for(proposal)['SearchableText'])))
        self.assertEqual(u'Client1 1.1 / 1', model.dossier_reference_number)
 def test_adding(self, browser):
     self.login(self.manager, browser)
     browser.open(view='++add++opengever.repository.repositoryroot')
     browser.fill({'Title': u'Foob\xe4r'}).save()
     statusmessages.assert_no_error_messages()
     self.assertTrue(IRepositoryRoot.providedBy(browser.context))
     self.assertEqual('foobar', browser.context.getId())
Пример #10
0
    def test_proposal_can_be_edited_in_browser(self, browser):
        self.login(self.dossier_responsible, browser)
        browser.visit(self.draft_proposal)
        editbar.contentview('Edit').click()
        self.assertEqual(u'Antrag f\xfcr Kreiselbau',
                         browser.find('Title').value)

        browser.fill({
            'Title': u'Another pr\xf6posal',
            'Attachments': [self.document]
        }).save()
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message('Changes saved')

        proposal = browser.context
        browser.open(proposal, view='tabbedview_view-overview')
        self.assertEquals(
            [['Title', u'Another pr\xf6posal'],
             ['Committee', u'Kommission f\xfcr Verkehr'], ['Meeting', ''],
             ['Proposal document', u'Antrag f\xfcr Kreiselbau'],
             ['State', 'Pending'], ['Decision number', ''],
             ['Attachments', u'Vertr\xe4gsentwurf']],
            browser.css('table.listing').first.lists())

        self.assertEqual(1, len(proposal.relatedItems))
        self.assertEqual(self.document, proposal.relatedItems[0].to_object)
        self.assertEqual(u'Another pr\xf6posal', proposal.title)

        model = proposal.load_model()
        self.assertIsNotNone(model)
        self.assertEqual(Oguid.for_object(proposal), model.oguid)
        self.assertEqual(u'Another pr\xf6posal', proposal.title)
Пример #11
0
    def test_can_add_with_templates(self, browser):
        self.login(self.manager, browser)
        browser.open()
        factoriesmenu.add('Committee Container')
        browser.fill({
            'Title': u'Sitzungen',
            'Protocol header template': self.sablon_template,
            'Protocol suffix template': self.sablon_template,
            'Agenda item header template for the protocol':
            self.sablon_template,
            'Agenda item suffix template for the protocol':
            self.sablon_template,
            'Excerpt header template': self.sablon_template,
            'Excerpt suffix template': self.sablon_template,
            'Paragraph template': self.sablon_template,
            'Ad hoc agenda item template': self.proposal_template
        }).save()
        statusmessages.assert_no_error_messages()

        self.assertEqual(self.proposal_template,
                         browser.context.get_ad_hoc_template())
        self.assertEqual(self.sablon_template,
                         browser.context.get_paragraph_template())
        self.assertEqual(self.sablon_template,
                         browser.context.get_excerpt_header_template())
        self.assertEqual(self.sablon_template,
                         browser.context.get_excerpt_suffix_template())
Пример #12
0
    def test_reference_number_is_not_reset_when_moving_to_same_parent(
            self, browser):
        """When a dossier is select to be moved but the target is the current
        parent, the dossier will not actually change the location.
        In this case the reference number should not be changed.
        """
        self.login(self.regular_user, browser)
        browser.open(self.empty_dossier)
        self.assertEquals(
            'Reference Number: Client1 1.1 / 4',
            browser.css('.reference_number').first.text,
            'Unexpected reference number. Test fixture changed?')
        dossier_intid = getUtility(IIntIds).getId(self.empty_dossier)

        self.move_items(browser,
                        obj=self.empty_dossier,
                        src=self.leaf_repofolder,
                        target=self.leaf_repofolder)
        assert_no_error_messages()

        #transaction.begin()  # sync
        dossier = getUtility(IIntIds).getObject(dossier_intid)
        browser.open(dossier)
        self.assertEquals(
            'Reference Number: Client1 1.1 / 4',
            browser.css('.reference_number').first.text,
            'Moving to the current parent should not change'
            ' the reference number because the location does'
            ' not change.')
 def test_adding(self, browser):
     self.login(SITE_OWNER_NAME, browser)
     browser.open(view='++add++opengever.repository.repositoryroot')
     browser.fill({'Title': u'Foob\xe4r'}).save()
     statusmessages.assert_no_error_messages()
     self.assertTrue(IRepositoryRoot.providedBy(browser.context))
     self.assertEqual('foobar', browser.context.getId())
    def test_translated_title_is_on_top_when_editing_the_inbox(self, browser):
        self.login(self.manager, browser=browser)

        browser.open(self.inbox, view='edit')
        statusmessages.assert_no_error_messages()

        self.assert_translated_title_fields_in_browser(browser)
    def test_no_proposal_excerpt_document_link_if_no_permission(self, browser):
        self.login(self.committee_responsible, browser)
        agenda_item = self.schedule_proposal(self.meeting,
                                             self.submitted_word_proposal)
        agenda_item.decide()
        excerpt_document = agenda_item.generate_excerpt(title='The Excerpt')
        agenda_item.return_excerpt(excerpt_document)

        self.login(self.committee_responsible, browser)
        browser.open(self.submitted_word_proposal,
                     view='tabbedview_view-overview')
        statusmessages.assert_no_error_messages()
        self.assertEquals(excerpt_document.absolute_url(),
                          browser.css('#excerptBox a').first.attrib['href'])

        self.login(self.dossier_responsible, browser)
        self.meeting_dossier.__ac_local_roles_block__ = True
        self.meeting_dossier.reindexObjectSecurity()

        self.login(self.committee_responsible, browser)
        browser.open(self.submitted_word_proposal,
                     view='tabbedview_view-overview')
        statusmessages.assert_no_error_messages()
        with self.assertRaises(NoElementFound):
            browser.css('#excerptBox a').first.click()
Пример #16
0
    def test_choose_selected_type_for_document(self, browser):
        self.login(self.dossier_responsible, browser)
        browser.open(self.dossier)
        factoriesmenu.add('Proposal')
        browser.fill({
            'Title': u'A pr\xf6posal',
            'Committee': u'Rechnungspr\xfcfungskommission',
            'Proposal document type': 'Existing document',
            'Proposal Document': u'/'.join(self.document.getPhysicalPath()),
            'Proposal template': u'Geb\xfchren',
        }).save()

        self.assertEqual(
            browser.context.getChildNodes()._data[0].file.data,
            self.document.file.data
            )

        browser.open(self.dossier)
        factoriesmenu.add('Proposal')
        browser.fill({
            'Title': u'A pr\xf6posal',
            'Committee': u'Rechnungspr\xfcfungskommission',
            'Proposal document type': 'From template',
            'Proposal Document': u'/'.join(self.document.getPhysicalPath()),
            'Proposal template': self.proposal_template.Title(),
        }).save()

        statusmessages.assert_no_error_messages()

        self.assertEqual(
            self.proposal_template.file.data,
            browser.context.getChildNodes()._data[0].file.data)
 def test_add_business_case_dossier(self, browser):
     self.login(self.regular_user, browser)
     browser.open(self.leaf_repofolder)
     factoriesmenu.add('Business Case Dossier')
     browser.fill({'Title': u'\xc4s Dossier'}).save()
     statusmessages.assert_no_error_messages()
     statusmessages.assert_message('Item created')
 def test_fill_umlauts(self, browser):
     self.grant('Manager')
     browser.login().open()
     factoriesmenu.add('Page')
     browser.fill({'Title': u'F\xf6lder'}).save()
     statusmessages.assert_no_error_messages()
     self.assertEquals(u'F\xf6lder', plone.first_heading())
 def test_text_is_used_as_title(self, browser):
     browser.login().open(self.contentpage)
     factoriesmenu.add('TextBlock')
     browser.fill({'Text': '<p>Hello World</p>'}).save()
     statusmessages.assert_no_error_messages()
     block = self.contentpage.objectValues()[0]
     self.assertEquals('Hello World', block.Title())
Пример #20
0
 def test_save_add_form(self, browser):
     browser.login(SITE_OWNER_NAME).open()
     factoriesmenu.add('Page')
     browser.fill({'Title': 'The page'}).save()
     statusmessages.assert_no_error_messages()
     self.assertEquals(browser.url,
                       self.portal.portal_url() + '/the-page/view')
    def test_translated_title_is_on_top_when_editing_the_inbox(self, browser):
        self.login(self.manager, browser=browser)

        browser.open(self.inbox, view='edit')
        statusmessages.assert_no_error_messages()

        self.assert_translated_title_fields_in_browser(browser)
 def test_title_is_cropped_chars_when_filled_with_text(self, browser):
     browser.login().open(self.contentpage)
     factoriesmenu.add('TextBlock')
     browser.fill({'Text': '<p>%s</p>' % ('X' * 50)}).save()
     statusmessages.assert_no_error_messages()
     block = self.contentpage.objectValues()[0]
     self.assertEquals(29, len(block.Title()))
Пример #23
0
    def test_reference_number_is_not_reset_when_moving_to_same_parent(self, browser):
        """When a dossier is select to be moved but the target is the current
        parent, the dossier will not actually change the location.
        In this case the reference number should not be changed.
        """
        self.login(self.regular_user, browser)
        browser.open(self.empty_dossier)
        self.assertEquals('Reference Number: Client1 1.1 / 4',
                          browser.css('.reference_number').first.text,
                          'Unexpected reference number. Test fixture changed?')
        dossier_intid = getUtility(IIntIds).getId(self.empty_dossier)

        self.move_items(browser,
                        obj=self.empty_dossier,
                        src=self.leaf_repofolder,
                        target=self.leaf_repofolder)
        assert_no_error_messages()

        #transaction.begin()  # sync
        dossier = getUtility(IIntIds).getObject(dossier_intid)
        browser.open(dossier)
        self.assertEquals('Reference Number: Client1 1.1 / 4',
                          browser.css('.reference_number').first.text,
                          'Moving to the current parent should not change'
                          ' the reference number because the location does'
                          ' not change.')
Пример #24
0
    def test_issue_key_form_handles_cancelling(self, browser):
        browser.login().open(view='@@manage-service-keys')
        browser.find('Issue new service key').click()
        browser.find('Cancel').click()

        assert_no_error_messages()
        self.assertEqual(['Key creation cancelled.'], info_messages())
Пример #25
0
    def test_configure_trigger_on_news_folder(self, browser):
        self.grant('Manager')
        browser.login().open()
        factoriesmenu.add('News Folder')
        browser.fill(
            {'Title': 'News Folder',
             'Mopage trigger enabled': True,
             'Mopage trigger URL': (
                 'https://*****:*****@xml.mopage.ch/infoservice/xml.php'),
             'Mopage data endpoint URL (Plone)': (
                 'http://nohost/plone/news-folder/mopage.news.xml'
                 '?partnerid=123&imported=456')}).save()

        statusmessages.assert_no_error_messages()

        mopage_trigger = IPublisherMopageTrigger(browser.context)
        self.assertTrue(mopage_trigger.is_enabled())

        trigger_url = mopage_trigger.build_trigger_url()
        self.assertEquals('https://*****:*****@xml.mopage.ch/infoservice/xml.php'
                          '?url=http%3A%2F%2Fnohost%2Fplone%2Fnews-folder'
                          '%2Fmopage.news.xml%3Fpartnerid%3D123%26imported%3D456',
                          trigger_url)

        params =  urlparse.parse_qs(urlparse.urlparse(trigger_url)[4])['url']
        self.assertEquals(['http://nohost/plone/news-folder/'
                           'mopage.news.xml?partnerid=123&imported=456'],
                          params)
Пример #26
0
    def test_word_proposal_can_be_submitted(self, browser):
        self.login(self.dossier_responsible, browser)
        self.assertEqual(Proposal.STATE_PENDING,
                         self.draft_word_proposal.get_state())
        self.assertEqual('proposal-state-active',
                         api.content.get_state(self.draft_word_proposal))

        browser.open(self.draft_word_proposal, view='tabbedview_view-overview')
        browser.click_on('Submit')
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message('Proposal successfully submitted.')
        self.assertEqual(Proposal.STATE_SUBMITTED,
                         self.draft_word_proposal.get_state())
        self.assertEqual('proposal-state-submitted',
                         api.content.get_state(self.draft_word_proposal))

        self.login(self.administrator)
        model = self.draft_word_proposal.load_model()
        submitted_proposal = model.resolve_submitted_proposal()
        proposal_file = self.draft_word_proposal.get_proposal_document().file
        submitted_proposal_file = submitted_proposal.get_proposal_document(
        ).file
        with proposal_file.open() as expected:
            with submitted_proposal_file.open() as got:
                self.assertEquals(expected.read(), got.read())
Пример #27
0
    def test_proposal_excerpt_document_link(self, browser):
        self.login(self.committee_responsible, browser)
        agenda_item = self.schedule_proposal(self.meeting,
                                             self.submitted_proposal)
        agenda_item.decide()
        excerpt_document = agenda_item.generate_excerpt(title='The Excerpt')
        agenda_item.return_excerpt(excerpt_document)

        browser.open(self.submitted_proposal, view='tabbedview_view-overview')
        statusmessages.assert_no_error_messages()
        expected_listing = [
            ['Title', u'Vertr\xe4ge'],
            ['Description', u'F\xfcr weitere Bearbeitung bewilligen'],
            ['Dossier', u'Vertr\xe4ge mit der kantonalen Finanzverwaltung'],
            ['Committee', u'Rechnungspr\xfcfungskommission'],
            ['Meeting', u'9. Sitzung der Rechnungspr\xfcfungskommission'],
            ['Issuer', 'Ziegler Robert (robert.ziegler)'],
            ['Proposal document', u'Vertr\xe4ge'],
            ['State', 'Decided'],
            ['Decision number', '2016 / 2'],
            ['Attachments', u'Vertr\xe4gsentwurf'],
            ['Excerpt', 'The Excerpt'],
        ]
        self.assertEqual(expected_listing,
                         browser.css('table.listing').first.lists())

        browser.css('a.document_link')[2].click()
        statusmessages.assert_no_error_messages()
        self.assertEquals(excerpt_document.absolute_url(), browser.url)
Пример #28
0
 def test_can_be_added_as_manager(self, browser):
     self.login(self.manager, browser)
     browser.open(view='folder_contents')
     factoriesmenu.add('WorkspaceRoot')
     browser.fill({'Title (German)': u'Teamr\xe4ume',
                   'Title (French)': u'Ateliers'}).save()
     statusmessages.assert_no_error_messages()
     self.assertEquals(u'Teamr\xe4ume', plone.first_heading())
Пример #29
0
    def test_editing_and_saving_valid_documents_works(self, browser):
        browser.login().open(self.doc_with_file.absolute_url() + '/edit')
        browser.forms['form'].save()
        assert_no_error_messages()

        browser.login().open(self.doc_without_file.absolute_url() + '/edit')
        browser.forms['form'].save()
        assert_no_error_messages()
    def test_deactivate_action_is_not_displayed_for_administrator(self, browser):
        self.login(self.member_admin, browser)
        browser.open(self.private_dossier)
        statusmessages.assert_no_error_messages()

        self.assertEquals(
            0,
            len(browser.css('#workflow-transition-dossier-transition-deactivate')))
Пример #31
0
 def test_doc_without_file_but_preserved_as_paper_is_valid(self, browser):
     browser.login().open(self.doc_with_file.absolute_url() + '/edit')
     # Remove file, but add preserved as paper
     browser.fill({
         'Remove existing file': 'remove',
         'Preserved as paper': True
     }).save()
     assert_no_error_messages()
Пример #32
0
    def test_editing_and_saving_valid_documents_works(self, browser):
        browser.login().open(self.doc_with_file.absolute_url() + "/edit")
        browser.forms["form"].save()
        assert_no_error_messages()

        browser.login().open(self.doc_without_file.absolute_url() + "/edit")
        browser.forms["form"].save()
        assert_no_error_messages()
Пример #33
0
 def test_recursively_deactivate_subdossier(self, browser):
     self.login(self.secretariat_user, browser)
     self.deactivate(self.resolvable_dossier, browser, use_editbar=True)
     statusmessages.assert_no_error_messages()
     self.assert_workflow_state('dossier-state-inactive',
                                self.resolvable_subdossier)
     self.assert_workflow_state('dossier-state-inactive',
                                self.resolvable_dossier)
Пример #34
0
    def test_create_event_folder(self, browser):
        self.grant('Manager')
        browser.login().open()
        factoriesmenu.add('Event Folder')

        browser.fill({'Title': 'Activities'}).save()
        statusmessages.assert_no_error_messages()
        self.assertEquals('http://nohost/plone/activities/view', browser.url)
Пример #35
0
 def test_doc_with_file_but_not_preserved_as_paper_is_valid(self, browser):
     browser.login().open(self.doc_without_file.absolute_url() + '/edit')
     # Add File, but remove preserved as paper
     browser.fill({
         'File': ('File data', 'file.txt', 'text/plain'),
         'Preserved as paper': False
     }).save()
     assert_no_error_messages()
    def test_assert_no_error_messages_failure(self, browser):
        browser.open(view='test-statusmessages')

        with self.assertRaises(AssertionError) as cm:
            statusmessages.assert_no_error_messages(browser=browser)

        self.assertEquals('Unexpected "error" status messages:'
                          ' "[ERROR] An error message."',
                          str(cm.exception))
Пример #37
0
    def test_upload_unicode(self, browser):
        browser.login(SITE_OWNER_NAME).open()
        factoriesmenu.add('File')

        with asset('cities-utf8.xml') as pdf:
            browser.fill({'Title': u'Hall\xf6chen',
                          'File': pdf}).save()

        statusmessages.assert_no_error_messages()
 def test_security_view_access(self, browser):
     for user in (self.workspace_owner,
                  self.workspace_admin,
                  self.workspace_member,
                  self.workspace_guest):
         locals()['__traceback_info__'] = user
         with self.login(user, browser):
             browser.open(self.workspace_folder)
             assert_no_error_messages()
 def test_save_add_form(self, browser):
     self.grant('Manager')
     browser.login().open()
     factoriesmenu.add('Page')
     browser.fill({'Title': 'The page'}).save()
     statusmessages.assert_no_error_messages()
     self.assertEquals('/'.join((self.layer['portal'].absolute_url(),
                                 'the-page/view')),
                       browser.url)
Пример #40
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)
Пример #41
0
    def test_already_inactive_subdossier_will_be_ignored(self, browser):
        self.login(self.secretariat_user, browser)
        self.deactivate(self.resolvable_subdossier, browser, use_editbar=True)
        self.assert_workflow_state('dossier-state-inactive', self.resolvable_subdossier)

        self.deactivate(self.resolvable_dossier, browser, use_editbar=True)
        statusmessages.assert_no_error_messages()
        self.assert_workflow_state('dossier-state-inactive', self.resolvable_dossier)
        self.assert_workflow_state('dossier-state-inactive', self.resolvable_subdossier)
Пример #42
0
    def test_context_when_url_contains_view(self, browser):
        browser.login(SITE_OWNER_NAME).open()
        factoriesmenu.add('Page')

        browser.fill({'Title': u'Page',
                      'Exclude from navigation': True}).save()
        statusmessages.assert_no_error_messages()
        self.sync_transaction()

        self.assertEquals(self.portal.get('page'), browser.context)
Пример #43
0
    def test_unlock_actions_are_journalized(self, browser):
        self.login(self.administrator, browser)
        browser.open(self.branch_repofolder, view='referenceprefix_manager')
        browser.click_on('Unlock')
        statusmessages.assert_no_error_messages()

        # get last journal entry
        journal = get_journal_entry(self.repository_root, entry=-1)
        self.assertEquals('Unlocked prefix 1 in fuhrung.',
                          translate(journal.get('action').get('title')))
Пример #44
0
    def test_geocoding_triggered_when_creating_object(self, browser):
        browser.login().open()
        factoriesmenu.add('Page')
        with ExpectGeocodingRequest():
            browser.fill({'Title': 'Bern, Switzerland'}).submit()
        statusmessages.assert_no_error_messages()

        obj = self.portal.get('bern-switzerland')
        self.assertEquals(('Point', (7.444608, 46.947922)),
                          IGeoManager(obj).getCoordinates())
 def test_create_repository_folder(self, browser):
     self.login(self.administrator, browser)
     browser.open(self.branch_repofolder)
     factoriesmenu.add('RepositoryFolder')
     browser.fill({'Title': 'Custody'}).save()
     statusmessages.assert_no_error_messages()
     self.assertEquals(('tabbed_view', 'opengever-repository-repositoryfolder'),
                       plone.view_and_portal_type())
     custody = browser.context
     self.assertEquals(u'2', IReferenceNumberPrefix(custody).reference_number_prefix)
    def test_workspacefolder_is_addable_in_workspacefolder(self, browser):
        self.login(self.workspace_member, browser)
        browser.visit(self.workspace_folder)
        factoriesmenu.add('WorkspaceFolder')

        form = browser.find_form_by_field('Title')
        form.fill({'Title': u'Ein Unter\xf6rdnerli'})
        form.save()

        assert_no_error_messages(browser)
Пример #47
0
    def test_workspacefolder_is_addable_in_workspacefolder(self, browser):
        self.login(self.workspace_member, browser)
        browser.visit(self.workspace_folder)
        factoriesmenu.add('WorkspaceFolder')

        form = browser.find_form_by_field('Title')
        form.fill({'Title': u'Ein Unter\xf6rdnerli'})
        form.save()

        assert_no_error_messages(browser)
Пример #48
0
    def test_create_event_page(self, browser):
        self.grant('Manager')
        folder = create(Builder('event folder').titled(u'Activities'))
        browser.login().open(folder)
        factoriesmenu.add('Event Page')

        browser.fill({'Title': 'Jogging'}).save()
        statusmessages.assert_no_error_messages()
        self.assertEquals('http://nohost/plone/activities/jogging/view',
                          browser.url)
Пример #49
0
    def test_deactivate_action_is_not_displayed_for_owner(self, browser):
        self.login(self.regular_user, browser)
        browser.open(self.private_dossier)
        statusmessages.assert_no_error_messages()

        self.assertEquals(
            0,
            len(
                browser.css(
                    '#workflow-transition-dossier-transition-deactivate')))
Пример #50
0
    def test_object_addable_without_delete_permission(self, browser):
        user = create(Builder('user').with_roles('Contributor'))
        self.revoke_permission('Delete portal content', on=self.layer['portal'])
        transaction.commit()

        browser.login(user).open()
        factoriesmenu.add(self.folder_name)
        browser.fill({'Title': 'Foo'}).save()
        statusmessages.assert_no_error_messages()
        self.assertEquals('folder_listing', plone.view())
    def test_unlock_actions_are_journalized(self, browser):
        self.login(self.administrator, browser)
        browser.open(self.branch_repofolder, view='referenceprefix_manager')
        browser.click_on('Unlock')
        statusmessages.assert_no_error_messages()

        # get last journal entry
        journal = get_journal_entry(self.repository_root, entry=-1)
        self.assertEquals(
            'Unlocked prefix 1 in fuhrung.',
            translate(journal.get('action').get('title')))
    def test_translated_title_is_on_top_when_editing_the_inbox_container(
            self, browser):
        self.login(self.manager, browser=browser)

        inbox_container = create(
            Builder('inbox_container').titled(u'Inboxes').within(self.portal))

        browser.open(inbox_container, view='edit')
        statusmessages.assert_no_error_messages()

        self.assert_translated_title_fields_in_browser(browser)
    def test_changing_checkbox_values(self, browser):
        browser.login(SITE_OWNER_NAME).open()
        factoriesmenu.add("Page")
        browser.fill({"Title": u"Page", "Exclude from navigation": True}).save()
        statusmessages.assert_no_error_messages()
        self.assertTrue(IExcludeFromNavigation(browser.context).exclude_from_nav)

        browser.find("Edit").click()
        browser.fill({"Title": "New Title", "Exclude from navigation": False}).save()
        statusmessages.assert_no_error_messages()
        self.assertFalse(IExcludeFromNavigation(browser.context).exclude_from_nav)
    def test_do_not_fail_if_reference_is_none(self, browser):
        page = create(Builder('page').titled(u'The Page'))
        other_page = create(Builder('page').titled(u'The Other Page'))
        helpers.set_related_items(page, other_page)

        self.portal._delObject(other_page.getId(), suppress_events=True)
        transaction.commit()

        browser.login().visit(page)
        Workflow().do_transition('publish')
        statusmessages.assert_no_error_messages()
    def test_submitted_proposal_can_be_edited_in_browser(self, browser):
        self.login(self.committee_responsible, browser)
        browser.visit(self.submitted_proposal, view='edit')

        browser.fill({'Title': u'Submitted pr\xf6posal'}).save()
        statusmessages.assert_no_error_messages()
        statusmessages.assert_message('Changes saved')

        proposal = browser.context

        model = proposal.load_model()
        self.assertEqual(u'Submitted pr\xf6posal', model.submitted_title)
Пример #56
0
    def test_already_inactive_subdossier_will_be_ignored(self, browser):
        self.login(self.secretariat_user, browser)
        self.deactivate(self.resolvable_subdossier, browser, use_editbar=True)
        self.assert_workflow_state('dossier-state-inactive',
                                   self.resolvable_subdossier)

        self.deactivate(self.resolvable_dossier, browser, use_editbar=True)
        statusmessages.assert_no_error_messages()
        self.assert_workflow_state('dossier-state-inactive',
                                   self.resolvable_dossier)
        self.assert_workflow_state('dossier-state-inactive',
                                   self.resolvable_subdossier)
Пример #57
0
    def test_resolving_subdossier_when_parent_dossier_contains_documents(self, browser):
        self.login(self.secretariat_user, browser)

        create(Builder('document').within(self.subdossier))
        create(Builder('dossier').within(self.subdossier))

        resolve_dossier(self.subdossier, browser)

        statusmessages.assert_no_error_messages()
        self.assertEquals(
            ['The subdossier has been succesfully resolved.'],
            info_messages())