fix: resolve navigation-cache regressions and todo UX
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
from datetime import datetime, timezone
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from uuid import UUID, uuid4
|
||||
|
||||
import pytest
|
||||
|
||||
from core.auth.models import CurrentUser
|
||||
from models.todos import Todo, TodoStatus
|
||||
from v1.todo.schemas import TodoUpdate
|
||||
from v1.todo.service import TodoService
|
||||
|
||||
|
||||
def _create_mock_todo() -> Todo:
|
||||
todo = MagicMock(spec=Todo)
|
||||
todo.id = uuid4()
|
||||
todo.owner_id = UUID("00000000-0000-0000-0000-000000000001")
|
||||
todo.title = "Test Todo"
|
||||
todo.description = None
|
||||
todo.priority = 1
|
||||
todo.order = 0
|
||||
todo.status = TodoStatus.PENDING
|
||||
todo.completed_at = None
|
||||
now = datetime(2026, 3, 20, 8, 0, 0, tzinfo=timezone.utc)
|
||||
todo.created_at = now
|
||||
todo.updated_at = now
|
||||
return todo
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_update_refreshes_todo_before_building_response() -> None:
|
||||
user_id = UUID("00000000-0000-0000-0000-000000000001")
|
||||
todo = _create_mock_todo()
|
||||
|
||||
repository = AsyncMock()
|
||||
repository.get_by_id.return_value = todo
|
||||
repository.update.return_value = todo
|
||||
repository.get_schedule_items.return_value = []
|
||||
|
||||
schedule_item_repository = AsyncMock()
|
||||
|
||||
session = AsyncMock()
|
||||
service = TodoService(
|
||||
repository=repository,
|
||||
schedule_item_repository=schedule_item_repository,
|
||||
session=session,
|
||||
current_user=CurrentUser(id=user_id),
|
||||
)
|
||||
|
||||
await service.update(
|
||||
todo.id,
|
||||
TodoUpdate(
|
||||
title="Updated",
|
||||
description=None,
|
||||
priority=None,
|
||||
order=None,
|
||||
status=None,
|
||||
schedule_item_ids=None,
|
||||
),
|
||||
)
|
||||
|
||||
session.commit.assert_awaited_once()
|
||||
session.refresh.assert_awaited_once_with(todo)
|
||||
Reference in New Issue
Block a user