Exemplo n.º 1
0
    def test_complete(self):
        action_point = ActionPointFactory(status='pre_completed')
        mail.outbox = []

        action_point.complete()
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].cc, [action_point.assigned_to.email])
Exemplo n.º 2
0
    def test_complete(self):
        action_point = ActionPointFactory(status='pre_completed')
        mail.outbox = []

        action_point.complete()
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].cc, [action_point.assigned_to.email])
Exemplo n.º 3
0
    def test_list_csv(self):
        ActionPointFactory(status='open', comments__count=1)
        ActionPointFactory(status='open',
                           comments__count=1,
                           engagement=MicroAssessmentFactory())
        ActionPointFactory(status='open',
                           comments__count=1,
                           tpm_activity=TPMVisitFactory(
                               tpm_activities__count=1).tpm_activities.first())

        self._test_export(self.pme_user,
                          'action-points:action-points-export/csv')
Exemplo n.º 4
0
    def test_travel_filter(self):
        travel_activity = TravelActivityFactory()
        ActionPointFactory(
        )  # common action point, shouldn't appear while filtering
        ActionPointFactory(travel_activity=travel_activity)

        response = self.forced_auth_req(
            'get',
            reverse('action-points:action-points-list'),
            data={'travel_activity': travel_activity.id},
            user=self.unicef_user)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data['results']), 1)
Exemplo n.º 5
0
    def test_author_complete(self):
        assigner = PMEUserFactory()
        action_point = ActionPointFactory(status='pre_completed', assigned_by=assigner)
        mail.outbox = []

        action_point.complete(completed_by=assigner)
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].cc, [action_point.assigned_to.email])

        email = mail.outbox[0]
        closed_by_sentence = '{} has closed the following action point:'.format(assigner.get_full_name())
        self.assertIn(closed_by_sentence, email.body)
        self.assertIn(closed_by_sentence, email.alternatives[0][0])
Exemplo n.º 6
0
    def test_author_complete(self):
        assigner = PMEUserFactory()
        action_point = ActionPointFactory(status='pre_completed',
                                          assigned_by=assigner)
        mail.outbox = []

        action_point.complete(completed_by=assigner)
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].cc, [action_point.assigned_to.email])

        email = mail.outbox[0]
        closed_by_sentence = '{} has closed the following action point:'.format(
            assigner.get_full_name())
        self.assertIn(closed_by_sentence, email.body)
        self.assertIn(closed_by_sentence, email.alternatives[0][0])
Exemplo n.º 7
0
    def test_create_linked(self):
        # no email should be send for now
        related_object = MicroAssessmentFactory()
        mail.outbox = []

        ActionPointFactory(engagement=related_object)
        self.assertEqual(len(mail.outbox), 0)
Exemplo n.º 8
0
    def test_action_point_editable_by_author(self):
        visit = TPMVisitFactory(status='tpm_reported', tpm_activities__count=1)
        activity = visit.tpm_activities.first()
        action_point = ActionPointFactory(tpm_activity=activity,
                                          status='pre_completed')

        self._test_action_point_editable(action_point, action_point.author)
Exemplo n.º 9
0
    def test_complete_success(self):
        action_point = ActionPointFactory(status='pre_completed')

        response = self._do_transition(action_point, 'complete', self.pme_user)
        self.assertEquals(response.status_code, status.HTTP_200_OK)

        action_point = self._refresh_instance(action_point)
        self.assertEquals(action_point.status, 'completed')
Exemplo n.º 10
0
    def test_list_csv(self):
        ActionPointFactory(status='open', comments__count=1)
        ActionPointFactory(status='open',
                           comments__count=1,
                           engagement=MicroAssessmentFactory())
        ActionPointFactory(status='open',
                           comments__count=1,
                           tpm_activity=TPMVisitFactory(
                               tpm_activities__count=1).tpm_activities.first())
        traveler = UserFactory()
        ActionPointFactory(status='open',
                           travel_activity=TravelActivityFactory(
                               primary_traveler=traveler,
                               travels=[TravelFactory(traveler=traveler)]))

        self._test_export(self.pme_user,
                          'action-points:action-points-export/csv')
Exemplo n.º 11
0
    def test_action_point_editable_by_pme_approved_visit(self):
        visit = TPMVisitFactory(status='unicef_approved',
                                tpm_activities__count=1)
        activity = visit.tpm_activities.first()
        action_point = ActionPointFactory(tpm_activity=activity,
                                          status='pre_completed')

        self._test_action_point_editable(action_point, self.pme_user)
Exemplo n.º 12
0
 def setUp(self):
     self.author = UserFactory(unicef_user=True)
     self.assignee = UserFactory(unicef_user=True)
     self.assigned_by = UserFactory(unicef_user=True)
     self.action_point = ActionPointFactory(status=self.status,
                                            author=self.author,
                                            assigned_by=self.assigned_by,
                                            assigned_to=self.assignee)
Exemplo n.º 13
0
    def test_action_point_readonly_by_focal_point_on_complete(self):
        self._init_finalized_engagement()
        action_point = ActionPointFactory(engagement=self.engagement,
                                          status='completed')

        self._test_action_point_editable(action_point,
                                         self.unicef_focal_point,
                                         editable=False)
Exemplo n.º 14
0
    def test_action_point_readonly_by_simple_unicef_user(self):
        self._init_finalized_engagement()
        action_point = ActionPointFactory(engagement=self.engagement,
                                          status='pre_completed')

        self._test_action_point_editable(action_point,
                                         self.unicef_user,
                                         editable=False)
Exemplo n.º 15
0
    def test_action_point_complete_fail_unicef_user(self):
        visit = TPMVisitFactory(status='tpm_reported', tpm_activities__count=1)
        activity = visit.tpm_activities.first()
        action_point = ActionPointFactory(tpm_activity=activity,
                                          status='pre_completed',
                                          comments__count=0)

        self._test_complete(action_point, self.unicef_user, can_complete=False)
Exemplo n.º 16
0
    def test_action_point_complete_assignee(self):
        visit = TPMVisitFactory(status='tpm_reported', tpm_activities__count=1)
        activity = visit.tpm_activities.first()
        action_point = ActionPointFactory(tpm_activity=activity,
                                          status='pre_completed',
                                          comments__count=0)

        self._test_complete(action_point, action_point.assigned_to)
Exemplo n.º 17
0
    def test_single_csv(self):
        action_point = ActionPointFactory(status='open',
                                          comments__count=1,
                                          engagement=MicroAssessmentFactory())

        self._test_export(self.pme_user,
                          'action-points:action-points-export/csv',
                          args=[action_point.id])
Exemplo n.º 18
0
    def test_action_point_readonly_by_unicef_user(self):
        visit = TPMVisitFactory(status='tpm_reported', tpm_activities__count=1)
        activity = visit.tpm_activities.first()
        action_point = ActionPointFactory(tpm_activity=activity,
                                          status='pre_completed')

        self._test_action_point_editable(action_point,
                                         self.unicef_user,
                                         editable=False)
Exemplo n.º 19
0
    def test_unknown_user_detail_view(self):
        action_point = ActionPointFactory(status='open')

        response = self.forced_auth_req(
            'get',
            reverse('action-points:action-points-detail',
                    args=[action_point.id]),
            user=self.common_user)
        self.assertEquals(response.status_code, status.HTTP_403_FORBIDDEN)
Exemplo n.º 20
0
    def test_unknown_user_list_view(self):
        ActionPointFactory()

        response = self.forced_auth_req(
            'get',
            reverse('action-points:action-points-list'),
            user=self.common_user)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Exemplo n.º 21
0
    def test_unicef_detail_view(self):
        action_point = ActionPointFactory(status='open')

        response = self.forced_auth_req(
            'get',
            reverse('action-points:action-points-detail',
                    args=[action_point.id]),
            user=self.unicef_user)
        self.assertEquals(response.status_code, status.HTTP_200_OK)
Exemplo n.º 22
0
    def test_complete_without_comments(self):
        action_point = ActionPointFactory(status='open')

        response = self._do_transition(action_point, 'complete', self.pme_user)
        self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertIn('comments', response.data)

        action_point = self._refresh_instance(action_point)
        self.assertEquals(action_point.status, 'open')
Exemplo n.º 23
0
    def test_filter_multiple_status(self):
        ActionPointFactory(status='open')
        ActionPointFactory(status='completed')

        response = self.forced_auth_req(
            'get',
            reverse('action-points:action-points-list'),
            data={'status': 'completed'},
            user=self.unicef_user)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data['results']), 1)

        response = self.forced_auth_req(
            'get',
            reverse('action-points:action-points-list'),
            data={'status__in': 'open,completed'},
            user=self.unicef_user)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data['results']), 2)
Exemplo n.º 24
0
    def test_action_point_readonly_on_complete_by_author(self):
        visit = TPMVisitFactory(status='unicef_approved',
                                tpm_activities__count=1)
        activity = visit.tpm_activities.first()
        action_point = ActionPointFactory(tpm_activity=activity,
                                          status='completed')

        self._test_action_point_editable(action_point,
                                         action_point.assigned_to,
                                         editable=False)
Exemplo n.º 25
0
 def test_t2f_related_str(self):
     action_point = ActionPointFactory(
         travel_activity=TravelActivityFactory())
     self.assertEqual(action_point.related_object_str,
                      'Task not assigned to Visit')
     action_point.travel_activity.travels.add(
         TravelFactory(
             traveler=action_point.travel_activity.primary_traveler))
     self.assertEqual(
         action_point.related_object_str, 'Task No 1 for Visit {}'.format(
             action_point.travel_activity.travel.reference_number))
Exemplo n.º 26
0
    def test_action_point_complete(self):
        self._init_finalized_engagement()
        action_point = ActionPointFactory(engagement=self.engagement,
                                          status='pre_completed',
                                          comments__count=0)

        response = self.forced_auth_req(
            'post',
            '/api/audit/engagements/{}/action-points/{}/complete/'.format(
                self.engagement.id, action_point.id),
            user=action_point.assigned_to)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['status'], 'completed')
Exemplo n.º 27
0
    def test_complete(self):
        action_point = ActionPointFactory(status='pre_completed')
        self.assertEqual(action_point.history.count(), 0)
        response = self.forced_auth_req(
            'post',
            reverse('action-points:action-points-transition',
                    args=(action_point.id, 'complete')),
            user=action_point.assigned_to,
            data={})

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['status'], 'completed')
        self.assertEqual(len(response.data['history']), 1)
Exemplo n.º 28
0
    def test_action_points_in_use(self):
        ActionPointFactory(location=self.location_no_geom)

        response = self.forced_auth_req(
            "get",
            reverse("management_gis:locations-gis-in-use"),
            user=self.unicef_staff,
            data={"country_id": self.country.id},
        )

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data), 1)
        self.assertEqual(
            sorted(response.data[0].keys()),
            ["gateway_id", "id", "level", "name", "p_code", "parent_id"])
Exemplo n.º 29
0
    def test_add_comment(self):
        action_point = ActionPointFactory(status='open', comments__count=0)
        self.assertEqual(action_point.history.count(), 0)

        response = self.forced_auth_req(
            'patch',
            reverse('action-points:action-points-detail',
                    args=(action_point.id, )),
            user=action_point.author,
            data={'comments': [{
                'comment': fuzzy.FuzzyText().fuzz()
            }]})

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data['comments']), 1)
        self.assertEqual(len(response.data['history']), 1)
Exemplo n.º 30
0
    def test_update_related_category(self):
        action_point = ActionPointFactory(status='open',
                                          comments__count=0,
                                          engagement=MicroAssessmentFactory())

        response = self.forced_auth_req(
            'patch',
            reverse('action-points:action-points-detail',
                    args=(action_point.id, )),
            user=action_point.author,
            data={
                'category':
                ActionPointCategoryFactory(
                    module=Category.MODULE_CHOICES.audit).id
            })

        self.assertEqual(response.status_code, status.HTTP_200_OK)
Exemplo n.º 31
0
    def test_additional_data(self):
        action_point = ActionPointFactory(status='pre_completed')
        initial_data = create_dict_with_relations(action_point)

        action_point.assigned_to = UserFactory()
        action_point.complete()
        action_point.save()

        author = UserFactory()
        create_snapshot(action_point, initial_data, author)

        self.assertEqual(action_point.history.count(), 1)

        snapshot = action_point.history.first()
        self.assertIn('key_events', snapshot.data)
        self.assertIn(ActionPoint.KEY_EVENTS.status_update,
                      snapshot.data['key_events'])
        self.assertIn(ActionPoint.KEY_EVENTS.reassign,
                      snapshot.data['key_events'])
Exemplo n.º 32
0
    def test_additional_data(self):
        action_point = ActionPointFactory(status='pre_completed')
        initial_data = create_dict_with_relations(action_point)

        action_point.assigned_to = UserFactory()
        action_point.complete()
        action_point.save()

        author = UserFactory()
        create_snapshot(action_point, initial_data, author)

        self.assertEqual(action_point.history.count(), 1)

        snapshot = action_point.history.first()
        self.assertIn('key_events', snapshot.data)
        self.assertIn(ActionPoint.KEY_EVENTS.status_update, snapshot.data['key_events'])
        self.assertIn(ActionPoint.KEY_EVENTS.reassign, snapshot.data['key_events'])
Exemplo n.º 33
0
    def test_reassign(self):
        author = UserFactory(unicef_user=True)
        assignee = UserFactory(unicef_user=True)
        new_assignee = UserFactory(unicef_user=True)

        action_point = ActionPointFactory(status='open',
                                          author=author,
                                          assigned_by=author,
                                          assigned_to=assignee)
        self.assertEqual(action_point.history.count(), 0)

        response = self.forced_auth_req(
            'patch',
            reverse('action-points:action-points-detail',
                    args=(action_point.id, )),
            user=assignee,
            data={'assigned_to': new_assignee.id})

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['author']['id'], author.id)
        self.assertEqual(response.data['assigned_to']['id'], new_assignee.id)
        self.assertEqual(response.data['assigned_by']['id'], assignee.id)
        self.assertEqual(len(response.data['history']), 1)
Exemplo n.º 34
0
 def test_completion_date(self):
     action_point = ActionPointFactory(status='pre_completed')
     self.assertIsNone(action_point.date_of_completion)
     action_point.complete()
     action_point.save()
     self.assertIsNotNone(action_point.date_of_completion)
Exemplo n.º 35
0
 def test_complete_fail(self):
     action_point = ActionPointFactory()
     with self.assertRaisesRegex(ValidationError, "comments"):
         action_point.complete()
Exemplo n.º 36
0
 def test_complete(self):
     action_point = ActionPointFactory(status='pre_completed')
     action_point.complete()