Exemple #1
0
    def test_get_responses(self):
        copy = create(Builder('task')
                      .in_state('task-state-in-progress')
                      .having(responsible_client=u'org-unit-1'))
        IResponseTransporter(copy).get_responses(
            'admin-unit-1', self.task.get_physical_path(), {})

        responses = IResponseContainer(copy)
        self.assertEquals(1, len(responses))
        self.assertEquals('task-transition-open-in-progress', responses.list()[0].transition)
        self.assertEquals(u'Ich \xfcbernehme diese Aufgabe', responses.list()[0].text)
        self.assertEquals(TEST_USER_ID, responses.list()[0].creator)
    def test_list_returns_response_in_add_order(self):
        self.login(self.workspace_member)
        IResponseContainer(self.todo).list()

        container = IResponseContainer(self.todo)

        responses = [Response(), Response(), Response()]
        [container.add(response) for response in responses]
        self.assertEqual(responses, container.list())
Exemple #3
0
    def test_adds_a_response_to_the_given_context(self):
        task = create(Builder('task'))

        self.prepare_request(task,
                             text=u'Response text',
                             transition='base-response')

        BaseResponseSyncerReceiver(task, self.request)()

        response_container = IResponseContainer(task)
        self.assertEqual(1, len(response_container))

        response = response_container.list()[0]

        self.assertEqual('Response text', response.text)
        self.assertEqual('base-response', response.transition)
Exemple #4
0
    def is_already_done(self):
        """This method returns `True` if this exact request was already
        executed.
        This is the case when the sender client has a conflict error when
        committing and the sender-request needs to be re-done. In this case
        this view is called another time but the changes were already made
        and committed - so we need to return "OK" and do nothing.
        """
        response_container = IResponseContainer(self.context)
        if len(response_container) == 0:
            return False

        last_response = response_container.list()[-1]
        if last_response.transition == self.transition and \
           api.user.get_current().getId() == last_response.creator:
            return True

        return False
Exemple #5
0
    def test_sync_comment_on_predecessor_to_successor(self):
        predecessor = create(Builder('task'))
        successor = create(Builder('task').successor_from(predecessor))

        sender = getMultiAdapter((predecessor, predecessor.REQUEST),
                                 IResponseSyncerSender,
                                 name='comment')

        sender.sync_related_tasks('task-commented',
                                  text=u'We need more stuff!')

        response_container = IResponseContainer(successor)
        self.assertEqual(1, len(response_container))

        response = response_container.list()[0]

        self.assertEqual('We need more stuff!', response.text)
        self.assertEqual('task-commented', response.transition)
Exemple #6
0
    def is_already_accepted(self):
        """When the sender has a conflict error but the reseiver already
        added the response, this view is called a second / third time in
        conflict resolution. We need to detect whether it is already done
        and not fail.
        """

        response_container = IResponseContainer(self.context)
        if len(response_container) == 0:
            return False

        last_response = response_container.list()[-1]
        current_user = AccessControl.getSecurityManager().getUser()

        if last_response.transition == ACCEPT_TASK_TRANSITION and \
                last_response.creator == current_user.getId():
            return True

        else:
            return False
Exemple #7
0
    def test_according_response_is_added_when_modify_deadline(self):
        task = create(
            Builder('task').having(issuer=TEST_USER_ID,
                                   deadline=datetime.date(2013, 1, 1)))

        self.prepare_request(task,
                             text=u'Lorem Ipsum',
                             transition='task-transition-modify-deadline',
                             new_deadline=datetime.date(2013, 10,
                                                        1).toordinal())

        task.unrestrictedTraverse(self.RECEIVER_VIEW_NAME)()

        container = IResponseContainer(task)
        response = container.list()[-1]

        self.assertEquals('Lorem Ipsum', response.text)
        self.assertEquals(TEST_USER_ID, response.creator)
        self.assertEquals([{
            'after': datetime.date(2013, 10, 1),
            'field_id': 'deadline',
            'field_title': u'label_deadline',
            'before': datetime.date(2013, 1, 1)
        }], response.changes)