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)
Ejemplo n.º 4
0
    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)