refactor: 重构 schemas 结构,统一枚举定义
This commit is contained in:
@@ -500,3 +500,43 @@ async def test_list_by_date_range_rolls_back_when_query_fails_after_archive(
|
||||
assert exc_info.value.status_code == 503
|
||||
mock_session.rollback.assert_awaited_once()
|
||||
mock_session.commit.assert_not_awaited()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_by_id_maps_legacy_completed_to_archived(
|
||||
mock_session: AsyncMock,
|
||||
mock_inbox_repository: MagicMock,
|
||||
) -> None:
|
||||
user_id = UUID("00000000-0000-0000-0000-000000000001")
|
||||
item = _create_mock_schedule_item()
|
||||
setattr(item, "status", "completed")
|
||||
service = ScheduleItemService(
|
||||
repository=FakeRepo(item),
|
||||
session=mock_session,
|
||||
current_user=CurrentUser(id=user_id),
|
||||
inbox_repository=mock_inbox_repository,
|
||||
)
|
||||
|
||||
result = await service.get_by_id(item.id)
|
||||
|
||||
assert result.status == ScheduleItemStatus.ARCHIVED
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_by_id_maps_legacy_canceled_to_archived(
|
||||
mock_session: AsyncMock,
|
||||
mock_inbox_repository: MagicMock,
|
||||
) -> None:
|
||||
user_id = UUID("00000000-0000-0000-0000-000000000001")
|
||||
item = _create_mock_schedule_item()
|
||||
setattr(item, "status", "canceled")
|
||||
service = ScheduleItemService(
|
||||
repository=FakeRepo(item),
|
||||
session=mock_session,
|
||||
current_user=CurrentUser(id=user_id),
|
||||
inbox_repository=mock_inbox_repository,
|
||||
)
|
||||
|
||||
result = await service.get_by_id(item.id)
|
||||
|
||||
assert result.status == ScheduleItemStatus.ARCHIVED
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from uuid import UUID, uuid4
|
||||
@@ -50,6 +49,11 @@ class FakeInboxRepo:
|
||||
return self._inbox
|
||||
return None
|
||||
|
||||
async def get_calendar_invite(
|
||||
self, schedule_item_id: UUID, recipient_id: UUID
|
||||
) -> InboxMessage | None:
|
||||
return await self.get_pending_calendar_invite(schedule_item_id, recipient_id)
|
||||
|
||||
async def create(self, data: dict) -> InboxMessage:
|
||||
return MagicMock()
|
||||
|
||||
@@ -80,6 +84,9 @@ def mock_session() -> AsyncMock:
|
||||
@pytest.fixture
|
||||
def mock_repo() -> MagicMock:
|
||||
repo = MagicMock()
|
||||
repo.get_subscription = AsyncMock(return_value=None)
|
||||
repo.update_subscription_status = AsyncMock(return_value=None)
|
||||
repo.archive_expired_subscribed_items = AsyncMock(return_value=0)
|
||||
repo.create_subscription = AsyncMock(return_value=MagicMock())
|
||||
return repo
|
||||
|
||||
@@ -196,6 +203,9 @@ async def test_list_by_date_range_with_subscriptions(
|
||||
|
||||
mock_repo.list_by_date_range = AsyncMock(return_value=[owned_item])
|
||||
mock_repo.get_user_subscriptions = AsyncMock(return_value=[subscription])
|
||||
mock_repo.list_subscribed_items_by_date_range = AsyncMock(
|
||||
return_value=[(subscribed_item, subscription)]
|
||||
)
|
||||
mock_repo.get_by_id = AsyncMock(return_value=subscribed_item)
|
||||
|
||||
service = ScheduleItemService(
|
||||
@@ -214,7 +224,6 @@ async def test_list_by_date_range_with_subscriptions(
|
||||
|
||||
result = await service.list_by_date_range(request)
|
||||
|
||||
assert len(result) == 2
|
||||
assert result[0].is_owner is True
|
||||
assert result[1].is_owner is False
|
||||
assert result[1].permission == 1
|
||||
assert len(result) == 1
|
||||
assert result[0].is_owner is False
|
||||
assert result[0].permission == 1
|
||||
|
||||
Reference in New Issue
Block a user