コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: tests.py プロジェクト: ash018/FFTracker
    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)
コード例 #9
0
ファイル: tests.py プロジェクト: ash018/FFTracker
    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)
コード例 #10
0
    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)
コード例 #11
0
    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)
コード例 #12
0
    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)
コード例 #13
0
    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)
コード例 #14
0
    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)
コード例 #15
0
    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)
コード例 #16
0
ファイル: tests.py プロジェクト: ash018/FFTracker
    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)
コード例 #17
0
ファイル: tests.py プロジェクト: ash018/FFTracker
    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)
コード例 #18
0
    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)
コード例 #19
0
ファイル: tests.py プロジェクト: ash018/FFTracker
    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')