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')
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)
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)
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])
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)
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')
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)
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')
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])
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)
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)
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)
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)
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)
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)
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')
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)
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)
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)
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)
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)
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))
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')
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)
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"])
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])
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)
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)
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'])
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)