def test_get_unassigned_task_list_agent(self): task1 = create_task('Task_test1', self.manager1) task2 = create_task('Task_test2', self.manager1) task3 = create_task('Task_test3', self.manager1, [self.agent13]) client.force_authenticate(self.agent13) response = client.get( task_prefix + TASK_URLS['get_task_list_agent'], {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 3) response = client.get( task_prefix + TASK_URLS['get_task_list_agent'], { 'status': 0, }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 2)
def test_get_task_list_manager(self): task1 = create_task('Task_test1', self.manager1, [self.agent11, self.agent12]) task2 = create_task('Task_test2', self.manager1, [self.agent11, self.agent12], status=TSTATE['In progress']) task3 = create_task('Task_test3', self.manager1, [self.agent13]) task4 = create_task('Task_test4', self.manager2, [self.agent21, self.agent22]) task5 = create_task('Task_test5', self.manager2, [self.agent22]) client.force_authenticate(self.manager1) response = client.get( task_prefix + TASK_URLS['get_task_list_manager'], { 'status': TSTATE['In progress'], 'agent_id': self.agent11.id }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) response = client.get( task_prefix + TASK_URLS['get_task_list_manager'], {'manager_id': self.manager1.id}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_execute_task_manager_success(self): task1 = create_task('Task_test1', self.manager1, [self.manager1, self.agent12]) task2 = create_task('Task_test1', self.manager1, [self.manager1]) client.force_authenticate(self.manager1) response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['In progress'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['Cancelled'], 'custom_fields': { 'reason': 'Client not available' }, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task2.id)), { 'status': TSTATE['In progress'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_self_assign_task_agent(self): task1 = create_task('Task_test1', self.manager1) task2 = create_task('Task_test2', self.manager1) task3 = create_task('Task_test3', self.manager1, [self.agent13]) client.force_authenticate(self.agent11) response = client.post( task_prefix + TASK_URLS['assign_task_agent'].replace('<int:pk>', str(task1.id)), {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_export_task_success(self): task1 = create_task('Task_test1', self.manager1, [self.agent11, self.agent12]) task2 = create_task('Task_test1', self.manager1, [self.agent13]) client.force_authenticate(self.manager1) response = client.get( task_prefix + TASK_URLS['export_tasks'], {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 2)
def test_get_task_list_agent(self): task1 = create_task('Task_test1', self.manager1, [self.agent11, self.agent12]) task2 = create_task('Task_test2', self.manager1, [self.agent11, self.agent12], status=TSTATE['In progress']) task3 = create_task('Task_test3', self.manager1, [self.agent13]) client.force_authenticate(self.agent11) response = client.get( task_prefix + TASK_URLS['get_task_list_agent'], {'status': TSTATE['Remaining']}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_edit_task_fail(self): client.force_authenticate(self.manager1) task = create_task('Task2', self.manager1, [self.agent13], status=TSTATE['In progress']) response = client.patch( task_prefix + TASK_URLS['edit_task_manager'].replace('<int:pk>', str(task.id)), { "title": "My First Task", 'manager': self.manager1.id, "start": "2018-07-31T05:07:24+00:00", "deadline": "2018-07-31T07:07:24+00:00", "images": ['url1..', 'url2..'], "image_required": True, "attachment_required": True, "task_type": "Installation", "agent_list": [self.agent12.id, self.agent11.id], # "point": {'lat': 23.780926, 'lng': 90.422858} }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE)
def test_get_resource_list_success(self): manager1 = create_manager(self.username1, self.organizer1, self.organizer1.org) agent11 = create_agent(self.username2, manager1) agent12 = create_agent(self.username3, manager1) task1 = create_task('Task_test1', manager1, [agent11, agent12], status=TSTATE['In progress']) client.force_authenticate(manager1) response = client.get( user_prefix + USER_ULRS['resource_list'], {'status': 'working'}, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 2) client.force_authenticate(None) client.force_authenticate(self.organizer1) response = client.get( user_prefix + USER_ULRS['resource_list'], {'status': 'working'}, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 0)
def test_batch_upload_location(self): task1 = create_task('Task2', self.manager1, [self.agent11], status=TSTATE['In progress']) self.agent12.is_present = True self.agent12.save() client.force_authenticate(user=None) client.force_authenticate(self.agent11) # print('Uploading batch....') response = client.post( location_prefix + LOC_URLS['batch_upload_location'], { 'mac': '00:0a:95:9d:68:16', 'points': [ { 'timestamp': '2018-12-03 16:28:48.464495', 'point': { 'lat': 23.780926, 'lng': 90.422858 }, 'event': 8 }, { 'timestamp': '2018-12-03 16:28:48.464495', 'point': { 'lat': 23.780926, 'lng': 90.422858 }, 'event': 8 }, ] }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(user=self.manager1) response = client.get( location_prefix + LOC_URLS['get_resource_history'], { 'agent_id': self.agent11.id, 'date': '2018-12-03', }, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) # print(response.data) response = client.get( location_prefix + LOC_URLS['get_resource_locations'], {}, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_get_task_fail(self): task = create_task('Task2', self.manager1, [self.agent13]) client.force_authenticate(user=None) client.force_authenticate(self.agent12) response = client.get( task_prefix + TASK_URLS['get_task_agent'].replace('<int:pk>', str(task.id)), format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_change_task_state_manager_success(self): task1 = create_task('Task_test1', self.manager1, [self.agent11, self.agent12]) client.force_authenticate(self.manager1) response = client.post( task_prefix + TASK_URLS['change_task_state_manager'].replace( '<int:pk>', str(task1.id)), {'status': TSTATE['Cancelled']}, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_get_task_list_search(self): task1 = create_task('New Task 1', self.manager1, [self.agent11, self.agent12]) task2 = create_task('New Task 2', self.manager1, [self.agent11, self.agent12]) task3 = create_task('New Task 3', self.manager1, [self.agent13]) task4 = create_task('New Task 4', self.manager1, [self.agent13]) task5 = create_task('Heavy Work', self.manager1, [self.agent13, self.agent12]) client.force_authenticate(self.manager1) response = client.get( task_prefix + TASK_URLS['get_task_list_paginated'], { 'token': 'New Task', }, format='json', ) # print(json.dumps(response.data)) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data['results']), 4)
def test_get_task_list_organizer(self): task1 = create_task('Task_test1', self.manager1, [self.agent11, self.agent12]) task2 = create_task('Task_test2', self.manager1, [self.agent11, self.agent12], status=TSTATE['In progress']) task3 = create_task('Task_test3', self.manager1, [self.agent13]) task4 = create_task('Task_test4', self.manager2, [self.agent21, self.agent22]) task5 = create_task('Task_test5', self.manager2, [self.agent22]) client.force_authenticate(self.organizer1) response = client.get( task_prefix + TASK_URLS['get_task_list_paginated'], {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data['results']), 5)
def test_change_task_state_manager_fail(self): task1 = create_task('Task_test_status', self.manager1, [self.agent11, self.agent12]) # manager can't start task client.force_authenticate(self.manager1) response = client.post( task_prefix + TASK_URLS['change_task_state_manager'].replace( '<int:pk>', str(task1.id)), {'status': TSTATE['In progress']}, format='json', ) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE) client.force_authenticate(user=None) client.force_authenticate(self.agent11) response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['In progress'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(self.manager1) # manager can't change in progress task response = client.post( task_prefix + TASK_URLS['change_task_state_manager'].replace( '<int:pk>', str(task1.id)), {'status': TSTATE['Cancelled']}, format='json', ) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE)
def test_get_task_success(self): task = create_task('Task2', self.manager1, [self.agent13]) client.force_authenticate(self.manager1) response = client.get( task_prefix + TASK_URLS['get_task_manager'].replace('<int:pk>', str(task.id)), format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['title'], task.title) client.force_authenticate(user=None) client.force_authenticate(self.agent13) response = client.get( task_prefix + TASK_URLS['get_task_agent'].replace('<int:pk>', str(task.id)), format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['title'], task.title)
def test_attendance_flow_not_fail_active_task(self): client.force_authenticate(self.agent11) task1 = create_task('Task2', self.manager1, [self.agent11], status=TSTATE['In progress']) response = client.post( location_prefix + LOC_URLS['upload_location_api'], { 'event': EVENT_DICT['To Offline'], 'mac': '00:0a:95:9d:68:16', 'point': { 'lat': 23.780926, 'lng': 90.422858 }, }, format='json', ) # print(response.data) self.assertEqual(response.status_code, 200) self.agent11.refresh_from_db() self.assertEqual(self.agent11.is_present, False)
def test_upload_location_agent_success(self): task1 = create_task('Task2', self.manager1, [self.agent11], status=TSTATE['In progress']) client.force_authenticate(self.agent11) response = client.post( location_prefix + LOC_URLS['upload_location_api'], { 'event': EVENT_DICT['On Task'], 'mac': '00:0a:95:9d:68:16', 'point': { 'lat': 23.780926, 'lng': 90.422858 }, }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(self.agent12) response = client.post( location_prefix + LOC_URLS['upload_location_api'], { 'event': EVENT_DICT['No Task'], 'mac': '00:0a:95:9d:68:17', 'point': { 'lat': 23.780926, 'lng': 90.422858 }, }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(self.agent13) response = client.post( location_prefix + LOC_URLS['upload_location_api'], { 'event': EVENT_DICT['No Task'], 'mac': '00:0a:95:9d:68:18', 'point': { 'lat': 23.780926, 'lng': 90.422858 }, }, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(self.manager1) response = client.get( location_prefix + LOC_URLS['get_resource_locations'], {}, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_execute_task_agent_fail(self): task1 = create_task('Task_test1', self.manager1, [self.agent11, self.agent12]) task2 = create_task('Task_test2', self.manager1, [self.agent11]) task3 = create_task('Task_test3', self.manager1, [self.agent13]) client.force_authenticate(self.agent11) response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['In progress'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_200_OK) # starting multiple task response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task2.id)), { 'status': TSTATE['In progress'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE) # changing other's task response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task3.id)), { 'status': TSTATE['Cancelled'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) # cancelling without reason response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['Cancelled'], 'custom_fields': {}, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE) task1.image_required = True task1.save() # without image response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['Complete'], 'custom_fields': { 'image_urls': '' }, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE) task1.image_required = False task1.save() self.agent11.is_present = False self.agent11.save() response = client.patch( task_prefix + TASK_URLS['change_task_state_agent'].replace( '<int:pk>', str(task1.id)), { 'status': TSTATE['Complete'], 'custom_fields': { 'image_urls': '' }, 'event_point': { 'lat': 23.780926, 'lng': 90.422858 } }, format='json', ) self.assertEqual(response.status_code, status.HTTP_406_NOT_ACCEPTABLE)
def test_get_dashboard_success(self): '''Team1 details''' manager1 = create_manager(self.username1, self.organizer1, self.organizer1.org) agent1 = create_agent(self.username2, manager1) agent2 = create_agent(self.username3, manager1) agent3 = create_agent(self.username4, manager1) agent4 = create_agent(self.username5, manager1) task1 = create_task('Retailer 1', manager1, [agent1, agent2], status=TSTATE['In progress']) task2 = create_task('Doctor Visit', manager1, [agent2]) task3 = create_task('Survey 1', manager1, [agent3]) task3.delayed = True task3.save() task4 = create_task('Survey 2', manager1, [agent4], status=TSTATE['Cancelled']) '''Team2 details''' manager2 = create_manager(self.username6, self.organizer1, self.organizer1.org) agent5 = create_agent(self.username7, manager2) task5 = create_task('Demand Collection', manager2, [agent5], status=TSTATE['In progress']) task5 = create_task('Delivery', manager2, [agent5], status=TSTATE['Cancelled']) client.force_authenticate(manager1) response = client.get( user_prefix + USER_ULRS['search_api_manager'].replace('<str:token>', 'survey'), {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(manager2) response = client.get( user_prefix + USER_ULRS['manager_dashboard'], {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) client.force_authenticate(user=None) client.force_authenticate(agent2) response = client.get( user_prefix + USER_ULRS['agent_dashboard'], {}, format='json', ) # print(response.data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data['current_task']), 1) self.assertEqual(response.data['current_task'][0]['title'], 'Retailer 1')