コード例 #1
0
    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)
コード例 #3
0
    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())
コード例 #6
0
 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)
コード例 #7
0
    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)
コード例 #9
0
 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.')
コード例 #13
0
 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())
コード例 #14
0
    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)
コード例 #15
0
    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)
コード例 #17
0
 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')
コード例 #18
0
 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())
コード例 #19
0
 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')
コード例 #21
0
    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)
コード例 #22
0
 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()
コード例 #30
0
    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()
コード例 #36
0
    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()
コード例 #38
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()
コード例 #39
0
 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())
コード例 #45
0
 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)
コード例 #46
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)
コード例 #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())
コード例 #51
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')))
コード例 #52
0
    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)
コード例 #53
0
    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()
コード例 #55
0
    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())