"""CompletionReport / CleanupReport dataclass 단위 테스트."""
from dataclasses import FrozenInstanceError

import pytest

from app.core.integrity_report import CompletionReport, CleanupReport


def test_completion_report_clean_default():
    r = CompletionReport(is_complete=True, missing=[], severity="clean", metadata={})
    assert r.is_complete is True
    assert r.severity == "clean"


def test_completion_report_missing_severity():
    r = CompletionReport(is_complete=False, missing=["5/12 ref missing"],
                         severity="missing", metadata={"expected": 12, "found": 7})
    assert not r.is_complete
    assert r.severity == "missing"
    assert r.metadata["expected"] == 12


def test_completion_report_frozen():
    r = CompletionReport(is_complete=True, missing=[], severity="clean", metadata={})
    with pytest.raises(FrozenInstanceError):
        r.is_complete = False  # frozen=True 이므로 변경 불가


def test_cleanup_report_zero_default():
    r = CleanupReport(deleted_db_rows=0, deleted_files=0, targets=[], skipped=[])
    assert r.deleted_db_rows == 0
    assert r.targets == []


def test_cleanup_report_with_targets():
    r = CleanupReport(deleted_db_rows=12, deleted_files=8,
                      targets=["image_asset(reference)"], skipped=["scene_still(other_step)"])
    assert r.deleted_db_rows == 12
    assert "scene_still(other_step)" in r.skipped
