44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from dataclasses import dataclass, field
|
||
|
|
from types import SimpleNamespace
|
||
|
|
from typing import Any
|
||
|
|
from uuid import uuid4
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from app.api import board_groups
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class _FakeSession:
|
||
|
|
executed: list[Any] = field(default_factory=list)
|
||
|
|
committed: int = 0
|
||
|
|
|
||
|
|
async def execute(self, statement: Any) -> None:
|
||
|
|
self.executed.append(statement)
|
||
|
|
|
||
|
|
async def commit(self) -> None:
|
||
|
|
self.committed += 1
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.asyncio
|
||
|
|
async def test_delete_board_group_cleans_group_memory_first(
|
||
|
|
monkeypatch: pytest.MonkeyPatch,
|
||
|
|
) -> None:
|
||
|
|
group_id = uuid4()
|
||
|
|
|
||
|
|
async def _fake_require_group_access(*_args: Any, **_kwargs: Any) -> None:
|
||
|
|
return None
|
||
|
|
|
||
|
|
monkeypatch.setattr(board_groups, "_require_group_access", _fake_require_group_access)
|
||
|
|
|
||
|
|
session = _FakeSession()
|
||
|
|
ctx = SimpleNamespace(member=object())
|
||
|
|
|
||
|
|
await board_groups.delete_board_group(group_id=group_id, session=session, ctx=ctx)
|
||
|
|
|
||
|
|
statement_tables = [statement.table.name for statement in session.executed]
|
||
|
|
assert statement_tables == ["boards", "board_group_memory", "board_groups"]
|
||
|
|
assert session.committed == 1
|