from __future__ import annotations import pytest from src.services import evidence_snapshot as evidence_module from src.services.evidence_snapshot import EvidenceSnapshot class _FakeDb: def __init__(self) -> None: self.records: list[object] = [] def add(self, record: object) -> None: self.records.append(record) async def flush(self) -> None: return None class _FakeDbContext: def __init__(self, db: _FakeDb) -> None: self.db = db async def __aenter__(self) -> _FakeDb: return self.db async def __aexit__(self, *_args: object) -> None: return None @pytest.mark.asyncio async def test_save_uses_snapshot_project_context( monkeypatch: pytest.MonkeyPatch, ) -> None: projects: list[str] = [] db = _FakeDb() def fake_get_db_context(project_id: str) -> _FakeDbContext: projects.append(project_id) return _FakeDbContext(db) monkeypatch.setattr(evidence_module, "get_db_context", fake_get_db_context) snapshot = EvidenceSnapshot(incident_id="INC-TENANT", project_id="tenant-a") await snapshot.save() assert projects == ["tenant-a"] assert len(db.records) == 1 assert snapshot.persisted is True