def test_only_expired_dossiers_can_be_added(self, browser):
        self.login(self.records_manager, browser)

        data = {'paths:list': obj2paths([self.expired_dossier]),
                '_authenticator': createToken()}

        self.assertEqual(date(2000, 12, 31), IDossier(self.expired_dossier).end)

        with freeze(datetime(2001, 1, 1)):
            browser.open(self.repository_root,
                         view='++add++opengever.disposition.disposition',
                         data=data)

            browser.find('Save').click()

            self.assertEquals(['There were some errors.'], error_messages())
            self.assertEquals(
                ['The retention period of the selected dossiers is not expired.'],
                browser.css('.fieldErrorBox .error').text)

        with freeze(datetime(2021, 1, 1)):
            browser.open(self.repository_root,
                         view='++add++opengever.disposition.disposition',
                         data=data)

            browser.find('Save').click()

            self.assertEquals([], error_messages())
            self.assertEquals(['Item created'], info_messages())
Exemple #2
0
    def test_send_mail_form_valid_email_addresses(self, browser):
        browser.login().visit(self.file_, view='send-mail-form')
        browser.fill({'Recipients': 'email@example\[email protected]'})
        browser.find('Send').click()

        statusmessages.error_messages()
        self.assertFalse(len(self.storage.get_storage()), 'Expect no tokens.')

        browser.fill({'Recipients': u'em\xe4il@example'})
        statusmessages.error_messages()
    def test_multi_checkin_shows_message_when_no_documents_are_selected(self, browser):
        browser.login().open(
            self.dossier, data={"paths": [], "checkin_without_comment:method": 1, "_authenticator": createToken()}
        )

        self.assertEquals(["You have not selected any documents"], error_messages())
        self.assertEquals("http://nohost/plone/dossier-1#documents", browser.url)

        browser.login().open(
            self.dossier, data={"paths": [], "checkin_documents:method": 1, "_authenticator": createToken()}
        )
        browser.click_on("Checkin")

        self.assertEquals(["You have not selected any documents"], error_messages())
        self.assertEquals("http://nohost/plone/dossier-1#documents", browser.url)
    def test_error_when_untrashing_removed_document(self, browser):
        self.login(self.manager, browser=browser)

        data = self.make_path_param(self.empty_document)
        data['_authenticator'] = createToken()

        self.trash_documents(self.empty_document)
        Remover([self.empty_document]).remove()

        # Removed document cannot be untrashed
        browser.open(self.empty_dossier, view="untrashed", data=data)

        self.assertTrue(ITrashed.providedBy(self.empty_document))
        self.assertEquals(
            [u'Untrashing {} is forbidden'.format(self.empty_document.title)],
            error_messages())

        # When restored, document can be untrashed
        api.content.transition(
            obj=self.empty_document,
            transition=self.empty_document.restore_transition)

        self.assertEqual(self.empty_document.active_state,
                         api.content.get_state(self.empty_document))

        browser.open(self.empty_dossier, view="untrashed", data=data)
        self.assertFalse(ITrashed.providedBy(self.empty_document))
Exemple #5
0
    def test_redirect_back_and_shows_message_when_no_items_is_selected(self, browser):
        browser.login().open(self.dossier, view="trashed")

        self.assertEquals(['You have not selected any items'],
                          error_messages())
        self.assertEquals(
            'http://nohost/plone/dossier-1#documents', browser.url)
Exemple #6
0
    def test_definitionXML_not_touched_on_error(self, browser):
        with open(INVALID_WORKFLOW_DEFINITION_XML, 'w+') as file_:
            file_.write('some contents')

        specdetails.visit('Invalid Workflow (invalid-spec)')

        self.assertTrue(
            specdetails.button_write_and_import(),
            'The Button "Write and Import Workflow" in "Invalid Workflow"'
            ' should be visible but is not.')
        specdetails.button_write_and_import().click()

        self.assertGreater(
            os.path.getsize(INVALID_WORKFLOW_DEFINITION_XML), 0,
            'The definition.xml (%s) is empty, but it should not be touched'
            'since we had an error while generating.' % (
                INVALID_WORKFLOW_DEFINITION_XML))

        self.maxDiff = None
        self.assertEquals([], statusmessages.info_messages(),
                          'Expecting no "info" portal messages.')

        self.assertEquals(['invalid-spec: Error while generating the'
                           ' workflow: Action "viewX" is'
                           ' neither action group nor transition.'],
                          statusmessages.error_messages(),
                          'Expecting only the workflow generation error.')

        remove_definition_xml(INVALID_WORKFLOW_DEFINITION_XML)
    def test_pasting_empty_clipboard_shows_message_and_redirect_back(self, browser):
        self.login(self.regular_user, browser=browser)
        browser.open(self.dossier, view='paste_clipboard')

        self.assertEqual(self.dossier.absolute_url(), browser.url)
        self.assertEqual([u"Can't paste items; the clipboard is emtpy"],
                         error_messages())
    def test_redirects_to_context_and_show_message_when_no_main_dossier_exists(self, browser):
        browser.login().open(self.repo, view='redirect_to_main_dossier')

        self.assertEquals(self.repo, browser.context)
        self.assertEquals(
            [u'The object `F\xfchrung` is not stored inside a dossier.'],
            error_messages())
Exemple #9
0
    def test_pasting_empty_clipboard_shows_message_and_redirect_back(self, browser):
        dossier = create(Builder('dossier'))
        browser.login().open(dossier, view='paste_clipboard')

        self.assertEqual(dossier.absolute_url(), browser.url)
        self.assertEqual([u"Can't paste items, the clipboard is emtpy"],
                         error_messages())
Exemple #10
0
    def test_generating_protocol_twice_displays_error_message(self, browser):
        self.setup_protocol(browser)
        browser.open(GenerateProtocol.url_for(self.meeting))

        browser.open(GenerateProtocol.url_for(self.meeting))
        self.assertEqual('The protocol for meeting My meeting has already '
                         'been generated.', error_messages()[0])
    def test_multi_checkin_does_not_checkin_locked_documents(self, browser):
        self.login(self.regular_user, browser)

        browser.open(self.document, view='tabbedview_view-overview')
        browser.find('Checkout and edit').click()

        browser.open(self.subdocument, view='tabbedview_view-overview')
        browser.find('Checkout and edit').click()

        lockable = IRefreshableLockable(self.document)
        lockable.lock()

        browser.open(
            self.dossier,
            method='POST',
            data={
                'paths': [
                    obj2brain(self.document).getPath(),
                    obj2brain(self.subdocument).getPath(),
                    ],
                'checkin_without_comment:method': 1,
                '_authenticator': createToken(),
                },
            )

        manager = getMultiAdapter((self.document, self.portal.REQUEST), ICheckinCheckoutManager)
        self.assertEquals('kathi.barfuss', manager.get_checked_out_by())

        manager = getMultiAdapter((self.subdocument, self.portal.REQUEST), ICheckinCheckoutManager)
        self.assertEquals(None, manager.get_checked_out_by())

        self.assertEquals([u'Could not check in document Vertr\xe4gsentwurf'],
                          error_messages())
    def test_multi_checkin_shows_message_when_no_documents_are_selected(self, browser):
        self.login(self.regular_user, browser)

        browser.open(
            self.dossier,
            data={
                'paths': [],
                'checkin_without_comment:method': 1,
                '_authenticator': createToken(),
                },
            )

        self.assertEquals(
            ['You have not selected any documents.'],
            error_messages(),
            )

        redirect_target_url = ''.join((
            self.dossier.absolute_url(),
            '#documents'
            ))

        self.assertEquals(
            redirect_target_url,
            browser.url,
            )

        browser.open(
            self.dossier,
            data={
                'paths': [],
                'checkin_documents:method': 1,
                '_authenticator': createToken(),
                },
            )

        browser.click_on('Checkin')

        self.assertEquals(
            ['You have not selected any documents.'],
            error_messages(),
            )

        self.assertIn(
            redirect_target_url,
            browser.url,
            )
    def test_redirect_back_and_shows_message_when_no_items_is_selected(self, browser):
        self.login(self.regular_user, browser=browser)
        browser.open(self.dossier, view="untrashed")

        self.assertEquals(['You have not selected any items.'],
                          error_messages())
        self.assertEquals(
            '{}#trash'.format(self.dossier.absolute_url()), browser.url)
    def test_protocol_shows_validation_errors(self, browser):
        browser.login()
        browser.open(self.meeting.get_url(view='protocol'))
        browser.fill({'Protocol start-page': 'uhoh, no int'}).submit()

        self.assertEqual(['There were some errors.'], error_messages())
        self.assertIn('Protocol start-page',
                      erroneous_fields(browser.forms['form']))
Exemple #15
0
    def test_pasting_empty_clipboard_shows_message_and_redirect_back(
            self, browser):
        dossier = create(Builder('dossier'))
        browser.login().open(dossier, view='paste_clipboard')

        self.assertEqual(dossier.absolute_url(), browser.url)
        self.assertEqual([u"Can't paste items; the clipboard is emtpy"],
                         error_messages())
Exemple #16
0
    def test_redirects_back_and_show_message_if_no_item_was_selected(
            self, browser):
        dossier = create(Builder('dossier'))
        browser.login().open(dossier, view='copy_items')

        self.assertEqual(dossier.absolute_url(), browser.url)
        self.assertEqual(['You have not selected any Items.'],
                         error_messages())
Exemple #17
0
    def test_protocol_shows_validation_errors(self, browser):
        browser.login()
        browser.open(self.meeting.get_url(view='protocol'))
        browser.fill({'Protocol start-page': 'uhoh, no int'}).submit()

        self.assertEqual(['There were some errors.'], error_messages())
        self.assertIn('Protocol start-page',
                      erroneous_fields(browser.forms['form']))
    def test_do_nothing_when_responsible_has_not_changed(self, browser):
        self.login(self.regular_user, browser=browser)

        responsible = 'fa:{}'.format(self.regular_user.getId())
        self.assign_task(responsible, u'Thats a job for you.')

        self.assertEquals(self.task.absolute_url(), browser.url.strip('/'))
        self.assertEquals(['No changes: same responsible selected'],
                          error_messages())
    def test_shows_message_when_checkout_cant_be_cancelled(self, browser):
        doc = create(Builder('document').within(self.dossier))

        browser.login().open(doc, {'_authenticator': createToken()},
                             view='cancel_document_checkouts', )

        self.assertEquals(
            [u'Could not cancel checkout on document Testdokum\xe4nt.'],
            error_messages())
Exemple #20
0
 def test_shows_statusmessage_when_no_template_is_configured(self, browser):
     url = self.period.get_url(self.committee)
     browser.login().open(url, view=self.view_name)
     # when an error happens here, the view returns an error
     # and the page is reloaded in Javascript. Here we reload manually
     browser.open(url)
     self.assertEqual(u'There is no toc template configured, toc could '
                      'not be generated.',
                      error_messages()[0])
Exemple #21
0
    def test_generating_protocol_twice_displays_error_message(self, browser):
        self.setup_protocol(browser)
        browser.open(GenerateProtocol.url_for(self.meeting))

        browser.open(GenerateProtocol.url_for(self.meeting))
        self.assertEqual(
            'The protocol for meeting My meeting has already '
            'been generated.',
            error_messages()[0])
    def test_resolving_is_cancelled_when_active_tasks_exist(self, browser):
        dossier = create(Builder('dossier'))
        create(Builder('task').within(dossier))

        browser.login().open(dossier, {'_authenticator': createToken()},
                             view='transition-resolve')

        self.assertEquals(dossier.absolute_url(), browser.url)
        self.assertEquals(['not all task are closed'], error_messages())
    def test_text_field_is_required_for_comments(self, browser):
        dossier = create(Builder('dossier'))
        task = create(Builder('task').titled('Task').within(dossier))

        browser.login().visit(task, view="addcommentresponse")
        browser.find('Save').click()

        self.assertEqual(['There were some errors.'],
                         statusmessages.error_messages())
Exemple #24
0
    def test_redirect_back_and_shows_message_when_no_items_is_selected(
            self, browser):
        self.login(self.regular_user, browser=browser)
        browser.open(self.dossier, view="untrashed")

        self.assertEquals(['You have not selected any items.'],
                          error_messages())
        self.assertEquals('{}#trash'.format(self.dossier.absolute_url()),
                          browser.url)
Exemple #25
0
    def test_redirects_to_context_and_show_statusmessage_when_obj_cant_be_found(self, browser):
        self.move_items(
            browser, src=self.source_dossier,
            obj='/invalid/path', target=self.target_dossier)

        self.assertEqual(self.source_dossier.absolute_url(), browser.url)
        self.assertEqual(
            "The selected objects can't be found, please try it again.",
            error_messages()[0])
    def test_cannot_copy_checked_out_document(self, browser):
        self.login(self.regular_user, browser=browser)

        self.checkout_document(self.document)
        browser.open(self.document, view='copy_item')

        self.assertEqual(self.document.absolute_url(), browser.url)
        self.assertEqual(['Checked out documents cannot be copied.'],
                         error_messages())
    def test_do_nothing_when_responsible_has_not_changed(self, browser):
        self.login(self.regular_user, browser=browser)

        responsible = 'fa:{}'.format(self.regular_user.getId())
        self.assign_task(responsible, u'Thats a job for you.')

        self.assertEquals(self.task.absolute_url(), browser.url.strip('/'))
        self.assertEquals(['No changes: same responsible selected'],
                          error_messages())
Exemple #28
0
    def test_fails_with_checked_out_documents(self, browser):
        create(Builder('document').within(self.dossier).checked_out())

        browser.login().open(self.dossier,
                             view='transition-deactivate',
                             data={'_authenticator': createToken()})
        self.assertEqual(
            u"The Dossier can't be deactivated, not all containeddocuments "
            "are checked in.",
            error_messages()[0])
 def test_shows_statusmessage_when_no_template_is_configured(self, browser):
     url = self.period.get_url(self.committee)
     browser.login().open(url, view=self.view_name)
     # when an error happens here, the view returns an error
     # and the page is reloaded in Javascript. Here we reload manually
     browser.open(url)
     self.assertEqual(
         u'There is no toc template configured, toc could '
         'not be generated.',
         error_messages()[0])
Exemple #30
0
    def test_deactivating_is_not_possible_when_pending_meetings_exists(self, browser):
        committee = create(Builder('committee').titled(u'My Committee'))
        create(Builder('meeting').having(committee=committee))

        browser.login().open(committee)
        browser.find('Deactivate').click()

        self.assertEqual(['Not all meetings are closed.'], error_messages())
        self.assertEqual(Committee.STATE_ACTIVE,
                         committee.load_model().get_state())
    def test_cannot_copy_checked_out_document(self, browser):
        self.login(self.regular_user, browser=browser)

        self.checkout_document(self.document)
        data = self.make_path_param(self.document, self.mail_eml)
        browser.open(self.dossier, data=data, view='copy_items')

        self.assertEqual(self.dossier.absolute_url(), browser.url)
        self.assertEqual([], info_messages())
        self.assertEqual(['Checked out documents cannot be copied.'],
                         error_messages())
Exemple #32
0
    def test_fails_with_resolved_subdossier(self, browser):
        create(Builder('dossier')
               .within(self.dossier)
               .titled(u'b\xe4\xe4\xe4h')
               .in_state('dossier-state-resolved'))

        browser.login().open(self.dossier, view='transition-deactivate',
                             data={'_authenticator': createToken()})
        self.assertEqual(
            u"The Dossier can't be deactivated, the subdossier b\xe4\xe4\xe4h is already resolved",
            error_messages()[0])
    def test_dossier_manager_is_not_mandatory_when_not_protecting_dossier(self, browser):
        self.login(self.dossier_manager, browser)

        browser.open(self.leaf_repofolder)
        factoriesmenu.add(u'Business Case Dossier')
        browser.fill({'Title': 'My Dossier'})
        form = browser.find_form_by_field('Reading')
        form.find_widget('Dossier manager').fill('')
        browser.click_on('Save')

        self.assertNotIn('There were some errors.', error_messages())
Exemple #34
0
    def test_redirects_to_context_and_show_statusmessage_when_obj_cant_be_found(
            self, browser):
        self.move_items(browser,
                        src=self.source_dossier,
                        obj='/invalid/path',
                        target=self.target_dossier)

        self.assertEqual(self.source_dossier.absolute_url(), browser.url)
        self.assertEqual(
            "The selected objects can't be found, please try it again.",
            error_messages()[0])
    def test_resolving_is_cancelled_when_documents_are_checked_out(self, browser):
        dossier = create(Builder('dossier'))
        create(Builder('document').within(dossier).checked_out())

        browser.login().open(dossier,
                             {'_authenticator': createToken()},
                             view='transition-resolve')

        self.assertEquals(dossier.absolute_url(), browser.url)
        self.assertEquals(['not all documents are checked in'],
                          error_messages())
    def test_resolving_is_cancelled_when_active_tasks_exist(self, browser):
        dossier = create(Builder('dossier'))
        create(Builder('task').within(dossier))

        browser.login().open(dossier,
                             {'_authenticator': createToken()},
                             view='transition-resolve')

        self.assertEquals(dossier.absolute_url(), browser.url)
        self.assertEquals(['not all task are closed'],
                          error_messages())
Exemple #37
0
    def test_fails_with_checked_out_documents(self, browser):
        create(Builder('document')
               .within(self.dossier)
               .checked_out())

        browser.login().open(self.dossier, view='transition-deactivate',
                             data={'_authenticator': createToken()})
        self.assertEqual(
            u"The Dossier can't be deactivated, not all containeddocuments "
            "are checked in.",
            error_messages()[0])
    def test_copy_document_from_repository_into_private_dossier_fails(self, browser):  # noqa
        self.login(self.regular_user, browser=browser)

        browser.open(
            self.dossier, view="copy_items",
            data=self.make_path_param(self.document))

        browser.open(self.private_dossier, view='paste_clipboard')
        self.assertEqual(
            ["Can't paste items, the context does not allow pasting items."],
            error_messages())
    def test_task_inside_closed_dossier_is_not_movable(self, browser):
        self.login(self.dossier_manager)
        self.move_items(
            browser, src=self.expired_dossier,
            task=self.expired_task, target=self.empty_dossier)

        self.assertEqual(
            ['Can only move objects from open dossiers!'],
            error_messages())
        self.assertIn(self.expired_task, self.expired_dossier.objectValues())
        self.assertNotIn(self.expired_task, self.empty_dossier.objectValues())
    def test_resolving_is_cancelled_when_documents_are_checked_out(
            self, browser):
        dossier = create(Builder('dossier'))
        create(Builder('document').within(dossier).checked_out())

        browser.login().open(dossier, {'_authenticator': createToken()},
                             view='transition-resolve')

        self.assertEquals(dossier.absolute_url(), browser.url)
        self.assertEquals(['not all documents are checked in'],
                          error_messages())
Exemple #41
0
    def test_task_inside_closed_dossier_is_not_movable(self, browser):
        self.login(self.dossier_manager)
        self.move_items(browser,
                        src=self.expired_dossier,
                        task=self.expired_task,
                        target=self.empty_dossier)

        self.assertEqual(['Can only move objects from open dossiers!'],
                         error_messages())
        self.assertIn(self.expired_task, self.expired_dossier.objectValues())
        self.assertNotIn(self.expired_task, self.empty_dossier.objectValues())
    def test_document_inside_a_task_is_not_movable(self, browser):
        self.login(self.regular_user)
        self.move_items(
            browser, src=self.task,
            obj=self.taskdocument, target=self.empty_dossier)

        self.assertEqual(
            'Document {} is inside a task and therefore not movable. Move the task instead'.format(self.taskdocument.title),
            error_messages()[0])
        self.assertIn(self.taskdocument, self.task.objectValues())
        self.assertNotIn(self.taskdocument, self.empty_dossier.objectValues())
Exemple #43
0
    def test_redirects_back_and_show_statusmessage_when_no_active_tasktemplatefolder_exists(self, browser):
        api.content.transition(
            self.folder1,
            transition='tasktemplatefolder-transition-activ-inactiv')
        transaction.commit()

        browser.login().open(self.dossier, view='add-tasktemplate')
        self.assertEquals(self.dossier.absolute_url(), browser.url)
        self.assertEquals(
            ['Currently there are no active task template folders registered.'],
            error_messages())
Exemple #44
0
    def test_fails_with_resolved_subdossier(self, browser):
        create(
            Builder('dossier').within(self.dossier).titled(
                u'b\xe4\xe4\xe4h').in_state('dossier-state-resolved'))

        browser.login().open(self.dossier,
                             view='transition-deactivate',
                             data={'_authenticator': createToken()})
        self.assertEqual(
            u"The Dossier can't be deactivated, the subdossier b\xe4\xe4\xe4h is already resolved",
            error_messages()[0])
Exemple #45
0
    def test_dossier_manager_is_not_mandatory_when_not_protecting_dossier(
            self, browser):
        self.login(self.dossier_manager, browser)

        browser.open(self.leaf_repofolder)
        factoriesmenu.add(u'Business Case Dossier')
        browser.fill({'Title': 'My Dossier'})
        form = browser.find_form_by_field('Reading')
        form.find_widget('Dossier manager').fill('')
        browser.click_on('Save')

        self.assertNotIn('There were some errors.', error_messages())
    def test_mail_inside_closed_dossier_is_not_movable(self, browser):
        self.login(self.dossier_manager)
        self.set_workflow_state('dossier-state-resolved', self.dossier)
        self.move_items(
            browser, src=self.dossier,
            obj=self.mail_eml, target=self.empty_dossier)

        self.assertEqual(
            ['Can only move objects from open dossiers!'],
            error_messages())
        self.assertIn(self.mail_eml, self.dossier.objectValues())
        self.assertNotIn(self.mail_eml, self.empty_dossier.objectValues())
Exemple #47
0
    def test_mail_inside_closed_dossier_is_not_movable(self, browser):
        self.login(self.dossier_manager)
        self.set_workflow_state('dossier-state-resolved', self.dossier)
        self.move_items(browser,
                        src=self.dossier,
                        obj=self.mail_eml,
                        target=self.empty_dossier)

        self.assertEqual(['Can only move objects from open dossiers!'],
                         error_messages())
        self.assertIn(self.mail_eml, self.dossier.objectValues())
        self.assertNotIn(self.mail_eml, self.empty_dossier.objectValues())
    def test_resolving_is_cancelled_when_dossier_has_an_invalid_end_date(
            self, browser):
        dossier = create(Builder('dossier').having(end=date(2016, 5, 7)))
        create(
            Builder('document').within(dossier).having(
                document_date=date(2016, 6, 1)))

        browser.login().open(dossier, {'_authenticator': createToken()},
                             view='transition-resolve')

        self.assertEquals(dossier.absolute_url(), browser.url)
        self.assertEquals([], error_messages())
    def test_protocol_template_can_be_configured_per_commitee(self, browser):
        custom_template = create(
            Builder('sablontemplate').within(
                self.templates).with_asset_file('sablon_template.docx'))

        browser.login().open(self.committee, view='edit')
        browser.fill({'Protocol template': custom_template})
        browser.css('#form-buttons-save').first.click()
        self.assertEqual([], error_messages())

        self.assertEqual(custom_template,
                         self.committee.get_protocol_template())
Exemple #50
0
    def test_document_inside_a_task_is_not_movable(self, browser):
        self.login(self.regular_user)
        self.move_items(browser,
                        src=self.task,
                        obj=self.taskdocument,
                        target=self.empty_dossier)

        self.assertEqual(
            'Document {} is not movable.'.format(self.taskdocument.title),
            error_messages()[0])
        self.assertIn(self.taskdocument, self.task.objectValues())
        self.assertNotIn(self.taskdocument, self.empty_dossier.objectValues())
Exemple #51
0
    def test_redirects_back_and_show_statusmessage_when_no_active_tasktemplatefolder_exists(
            self, browser):
        api.content.transition(
            self.folder1,
            transition='tasktemplatefolder-transition-activ-inactiv')
        transaction.commit()

        browser.login().open(self.dossier, view='add-tasktemplate')
        self.assertEquals(self.dossier.absolute_url(), browser.url)
        self.assertEquals([
            'Currently there are no active task template folders registered.'
        ], error_messages())
Exemple #52
0
    def test_redirects_back_and_show_statusmessage_when_no_active_tasktemplatefolder_exists(self, browser):

        self.login(self.regular_user, browser=browser)

        self.set_workflow_state(
            'tasktemplatefolder-state-inactiv', self.tasktemplatefolder)

        browser.open(self.dossier, view='add-tasktemplate')
        self.assertEquals(self.dossier.absolute_url(), browser.url)
        self.assertEquals(
            ['Currently there are no active task template folders registered.'],
            error_messages())
Exemple #53
0
    def test_issuing_key_without_title_is_not_allowed(self, browser):
        browser.login().open(view='@@manage-service-keys')
        browser.find('Issue new service key').click()
        browser.find('Issue key').click()

        self.assertEqual(['There were some errors.'], error_messages())

        self.assertEqual({'Title': ['Required input is missing.']},
                         erroneous_fields(browser.forms['form']))

        storage = CredentialStorage(self.plugin)
        self.assertEqual(0, len(storage.list_service_keys(TEST_USER_ID)))
    def test_shows_message_when_checkout_cant_be_cancelled(self, browser):
        doc = create(Builder('document').within(self.dossier))

        browser.login().open(
            doc,
            {'_authenticator': createToken()},
            view='cancel_document_checkouts',
        )

        self.assertEquals(
            [u'Could not cancel checkout on document Testdokum\xe4nt.'],
            error_messages())
    def test_redirects_back_and_show_statusmessage_when_no_active_tasktemplatefolder_exists(self, browser):

        self.login(self.regular_user, browser=browser)

        self.set_workflow_state(
            'tasktemplatefolder-state-inactiv', self.tasktemplatefolder)

        browser.open(self.dossier, view='add-tasktemplate')
        self.assertEquals(self.dossier.absolute_url(), browser.url)
        self.assertEquals(
            ['Currently there are no active task template folders registered.'],
            error_messages())
Exemple #56
0
    def test_mail_inside_closed_dossier_is_not_movable(self, browser):
        dossier = create(Builder('dossier').in_state('dossier-state-resolved'))
        mail = create(Builder('mail').within(dossier).titled(u'My mail'))

        self.move_items(browser,
                        src=dossier,
                        obj=mail,
                        target=self.target_dossier)

        self.assertIn(mail, dossier.objectValues())
        self.assertNotIn(mail, self.target_dossier.objectValues())
        self.assertEqual(['Can only move objects from open dossiers!'],
                         error_messages())
    def test_template_can_be_configured_per_committee(self, browser):
        self.grant("Administrator", "CommitteeResponsible")
        custom_template = create(
            Builder('sablontemplate').within(
                self.templates).with_asset_file('sablon_template.docx'))

        browser.login().open(self.committee, view='edit')
        browser.fill({'Agendaitem list template': custom_template})
        browser.css('#form-buttons-save').first.click()
        self.assertEqual([], error_messages())

        self.assertEqual(custom_template,
                         self.committee.get_agendaitem_list_template())
Exemple #58
0
    def test_document_inside_inactive_dossier_is_not_movable(self, browser):
        self.login(self.dossier_manager)
        self.move_items(browser,
                        src=self.inactive_dossier,
                        obj=self.inactive_document,
                        target=self.empty_dossier)

        self.assertEqual(['Can only move objects from open dossiers!'],
                         error_messages())
        self.assertIn(self.inactive_document,
                      self.inactive_dossier.objectValues())
        self.assertNotIn(self.inactive_document,
                         self.empty_dossier.objectValues())
    def test_resolving_is_cancelled_when_dossier_has_active_proposals(
            self, browser):
        repo = create(Builder('repository'))
        dossier = create(
            Builder('dossier').within(repo).having(end=date(2016, 5, 7)))
        create(Builder('proposal').within(dossier))

        browser.login().open(dossier, {'_authenticator': createToken()},
                             view='transition-resolve')

        self.assertEquals(dossier.absolute_url(), browser.url)
        self.assertEquals(['The dossier contains active proposals.'],
                          error_messages())