def test_delete_task_with_other_users(self): """ 存在するが、他Userに紐付いているTaskを 削除しようとしてNoneが返ってくることを期待する。 """ manipulator = TaskManipulator() TODO_USER = User.objects.get(pk=2) TODO_TITLE = "todo" TODO_DESCRIPTION = "todo-description" TODO_TASK = manipulator.create( user=TODO_USER, title=TODO_TITLE, description=TODO_DESCRIPTION ) user = User.objects.get(pk=1) task_id = manipulator.delete_task( user=user, task_id=TODO_TASK.id ) self.assertIsNone(task_id) # 当該タスクが削除されていないことを確認する。 task, _ = manipulator.get_task(user=TODO_USER, task_id=TODO_TASK.id) self.assertEqual(task, TODO_TASK)
def test_delete_task(self): """ Taskが正常に削除され、かつ、 削除されたTaskのIDが返ってくることを期待する。 """ manipulator = TaskManipulator() TODO_USER = User.objects.get(pk=2) TODO_TITLE = "todo" TODO_DESCRIPTION = "todo-description" TODO_TASK = manipulator.create( user=TODO_USER, title=TODO_TITLE, description=TODO_DESCRIPTION ) task_id = manipulator.delete_task( user=TODO_USER, task_id=TODO_TASK.id ) self.assertEqual(task_id, TODO_TASK.id) # 正常に削除できていることを確認する。 task, task_status = manipulator.get_task(user=TODO_USER, task_id=task_id) self.assertIsNone(task) self.assertIsNone(task_status)
def test_delete_task_with_no_task(self): """ 存在しないTaskを指定する。 Noneが返ってくることを期待する。 """ manipulator = TaskManipulator() TODO_USER = User.objects.get(pk=2) task_id = manipulator.delete_task( user=TODO_USER, task_id = 100 ) self.assertIsNone(task_id)
def delete(self, request, task_id): """ 削除対象としたいtask_id以外は、特に不要 レスポンスメッセージとして以下を期待 { "id": 削除したTaskのID, "title": 削除したTaskのtitle, "description": 削除したTaskのdescription } 削除に成功した場合は200 OKを返す。 削除対象のTaskが存在しない場合は404 Not Foundを返す。 404 Not Foundを返す際は、レスポンスボディは空 (本当にTaskが存在しない場合、 Taskに紐づくUserがリクエストしたUserと異なる場合も同様) """ manipulator = TaskManipulator() user = request.user task, _ = manipulator.get_task(user=user, task_id=task_id) if task is None: return Response(status=status.HTTP_404_NOT_FOUND) response_task = { "id": task.id, "title": task.title, "description": task.description } task_id = manipulator.delete_task(user=user, task_id=task.id) if task_id is None: # 基本的にはこれは到達不可能コード # (事前に削除対象のタスクが存在し、 # リクエストしたユーザのものであることを確認済みであるため) return Response(status=status.HTTP_404_NOT_FOUND) serializer = TaskSerializer(response_task) return Response(data=serializer.data, status=status.HTTP_200_OK)