def test_get_tasks(self): manipulator = TaskManipulator() # 事前にタスクを作成 TODO_USER = User.objects.get(pk=2) TODO_DESCRIPTION = "test-description" TODO_STATUS = TaskStatus.objects.get(pk=1) TODO_TASKS = [] for i in range(3): task = manipulator.create( title=str(i), user=TODO_USER, description=TODO_DESCRIPTION ) TODO_TASKS.append(task) task_list = manipulator.get_tasks(user=TODO_USER) self.assertEqual(len(task_list), 3) for i in range(3): self.assertEqual(task_list[i][0].id, TODO_TASKS[i].id) self.assertEqual(task_list[i][0].title, TODO_TASKS[i].title) self.assertEqual(task_list[i][0].description, TODO_TASKS[i].description) self.assertEqual(task_list[i][0].user, TODO_USER) self.assertEqual(task_list[i][1], TODO_STATUS)
def test_get_tasks_without_tasks(self): manipulator = TaskManipulator() TODO_USER = User.objects.get(pk=2) task_list = manipulator.get_tasks(user=TODO_USER) self.assertEqual(len(task_list), 0)
def get(self, request, task_id=None): """ 1) task_idが指定されている場合 ・対応するidを持つTaskがリクエストしたUserのものである場合は 当該Task1つのみを当該Taskに含んだを返す。 ・対応するTaskが存在しない場合は空配列と404 Not Foundを返す ・対応するTaskが存在してもリクエストしたUserのものではない場合も 404 Not Foundとから配列を返す。 2) task_idが指定されていない場合 ・リクエストしたUserのTaskの配列を返す(200 OK) <返すレスポンスの形式> [ { "id": Task.id, "title": Task.title, "description": Task.description, "status": Taskの最新TaskStatus.name },... ] """ user = request.user manipulator = TaskManipulator() tasks = [] if task_id is None: ts = manipulator.get_tasks(user=user) for task, task_status in ts: tasks.append({ "id": task.id, "title": task.title, "description": task.description, "status": task_status.name, }) else: task, task_status = manipulator.get_task(user=user, task_id=task_id) if task is None or task_status is None: # 一方のみがNone出ないことはアプリケーションの仕様上 # ありえないが念の為 serializer = TaskSerializer(tasks, many=True) return Response(data=serializer.data, status=status.HTTP_404_NOT_FOUND) tasks.append({ "id": task.id, "title": task.title, "description": task.description, "status": task_status.name, }) serializer = TaskSerializer(tasks, many=True) return Response(data=serializer.data, status=status.HTTP_200_OK)
def test_get_tasks_with_other_users(self): manipulator = TaskManipulator() # 事前にタスクを作成 TODO_USER = User.objects.get(pk=2) TODO_DESCRIPTION = "test-description" TODO_STATUS = TaskStatus.objects.get(pk=1) TODO_TASKS = [] for i in range(3): task = manipulator.create( title=str(i), user=TODO_USER, description=TODO_DESCRIPTION ) TODO_TASKS.append(task) USER = User.objects.get(pk=1) task_list = manipulator.get_tasks(user=USER) self.assertEqual(len(task_list), 0)