def test_update_task_with_wrong_status(self): manipulator = TaskManipulator() # 事前にタスクを作成 TODO_USER = User.objects.get(pk=2) TODO_TITLE = "todo" TODO_DESCRIPTION = "test-description" task = manipulator.create( title=TODO_TITLE, user=TODO_USER, description=TODO_DESCRIPTION ) # 更新処理タスクが期待したとおりに更新されているかを確認 UPDATED_TITLE = "updated" UPDATED_DESCRIPTION = "updated-description" WRONG_STATUS = "wrong" updated_task, updated_task_status = manipulator.update_task( user=TODO_USER, task_id=task.id, title=UPDATED_TITLE, description=UPDATED_DESCRIPTION, status=WRONG_STATUS ) # Taskが更新されていないこと、 # TaskStatusとしてNoneが返ってきていることを確認 self.assertEqual(updated_task, task) self.assertIsNone(updated_task_status)
def test_update_task_with_status_only(self): """ TaskStatusのみをアップデート """ manipulator = TaskManipulator() # 事前にタスクを作成 TODO_USER = User.objects.get(pk=2) TODO_TITLE = "todo" TODO_DESCRIPTION = "test-description" task = manipulator.create( title=TODO_TITLE, user=TODO_USER, description=TODO_DESCRIPTION ) # 更新処理タスクが期待したとおりに更新されているかを確認 RUNNING_STATUS = TaskStatus.objects.get(pk=2) updated_task, updated_task_status = manipulator.update_task( user=TODO_USER, task_id=task.id, status=RUNNING_STATUS.name ) self.assertEqual(updated_task.id, task.id) self.assertEqual(updated_task.title, TODO_TITLE) self.assertEqual(updated_task.description, TODO_DESCRIPTION) self.assertEqual(updated_task.user, TODO_USER) self.assertEqual(updated_task_status.name, RUNNING_STATUS.name)
def test_update_task_without_task_id(self): manipulator = TaskManipulator() user = User.objects.get(pk=2) task, task_status = manipulator.update_task( user=user, task_id=None ) self.assertIsNone(task) self.assertIsNone(task_status)
def patch(self, request, task_id): """ メッセージボディとして以下を期待 { "title": Taskの名前, "description": Taskの内容, "status": TaskStatusの名前 } レスポンスメッセージとして以下を作成する。 { "id": TaskのID, "title": 更新済みTaskの名前, "description": 更新済みTaskの詳細, "status": 更新済みTaskStatus } """ data = JSONParser().parse(request) user = request.user manipulator = TaskManipulator() task, task_status = manipulator.update_task( user = user, task_id=task_id, title=data.get("title"), description=data.get("description"), status=data.get("status") ) if task_status is None: if task is None: return Response(data=None, status=status.HTTP_404_NOT_FOUND) return Response(data=None, status=status.HTTP_400_BAD_REQUEST) if task is None: return Response(data=None, status=status.HTTP_404_NOT_FOUND) response_task = { "id": task.id, "title": task.title, "description": task.description, "status": task_status.name, } serializer = TaskSerializer(response_task) return Response(data=serializer.data, status=status.HTTP_200_OK)
def test_update_task_status_with_other_user(self): """ 他のユーザに紐づくタスクを指定した場合 に更新されずにNone, Noneが返ってくることを確認 """ manipulator = TaskManipulator() # 事前にタスクを作成 TODO_USER = User.objects.get(pk=2) TODO_TITLE = "todo" TODO_DESCRIPTION = "test-description" task = manipulator.create( title=TODO_TITLE, user=TODO_USER, description=TODO_DESCRIPTION ) # 更新処理タスクが期待したとおりに更新されているかを確認 USER = User.objects.get(pk=1) RUNNING_STATUS = TaskStatus.objects.get(pk=2) UPDATED_TITLE = "updated" UPDATED_DESCRIPTION = "updated-description" updated_task, updated_task_status = manipulator.update_task( user=USER, task_id=task.id, title=UPDATED_TITLE, description=UPDATED_DESCRIPTION, status=RUNNING_STATUS.name ) self.assertIsNone(updated_task) self.assertIsNone(updated_task_status) task = Task.objects.get(pk=task.id) self.assertEqual(task.title, TODO_TITLE) self.assertEqual(task.description, TODO_DESCRIPTION)
def test_update_task_status_without_task(self): """ 指定したtask_idに対応するTaskが存在しない場合 """ manipulator = TaskManipulator() TODO_USER = User.objects.get(pk=2) # 更新処理タスクが期待したとおりに更新されているかを確認 UPDATED_TITLE = "updated" UPDATED_DESCRIPTION = "updated-description" RUNNING_STATUS = TaskStatus.objects.get(pk=2) updated_task, updated_task_status = manipulator.update_task( user=TODO_USER, task_id=140000000, title=UPDATED_TITLE, description=UPDATED_DESCRIPTION, status=RUNNING_STATUS ) # Task, TaskStatusともにNoneであることを確認 self.assertIsNone(updated_task) self.assertIsNone(updated_task_status)
def test_update_task(self): """ 正常にTaskおよびTaskStatusの更新ができることを確認する """ manipulator = TaskManipulator() # 事前にタスクを作成 TODO_USER = User.objects.get(pk=2) TODO_TITLE = "todo" TODO_DESCRIPTION = "test-description" task = manipulator.create( title=TODO_TITLE, user=TODO_USER, description=TODO_DESCRIPTION ) # 更新処理タスクが期待したとおりに更新されているかを確認 RUNNING_STATUS = TaskStatus.objects.get(pk=2) UPDATED_TITLE = "updated" UPDATED_DESCRIPTION = "updated-description" updated_task, updated_task_status = manipulator.update_task( user=TODO_USER, task_id=task.id, title=UPDATED_TITLE, description=UPDATED_DESCRIPTION, status=RUNNING_STATUS.name ) self.assertEqual(updated_task.id, task.id) self.assertEqual(updated_task.title, UPDATED_TITLE) self.assertEqual(updated_task.description, UPDATED_DESCRIPTION) self.assertEqual(updated_task.user, TODO_USER) self.assertEqual(updated_task_status.name, RUNNING_STATUS.name)