"""Smoke test for migration 0002: confirms model classes import and the tag-kind uniqueness rule shape is correct. """ from backend.app.models import ( Base, ImportBatch, ImportSettings, ImportTask, Tag, TagKind, ) def test_new_tables_registered(): expected = {"import_batch", "import_task", "import_settings"} assert expected.issubset(Base.metadata.tables.keys()) def test_tag_has_kind_and_fandom_id(): cols = {c.name for c in Tag.__table__.columns} assert "kind" in cols assert "fandom_id" in cols assert "namespace" not in cols def test_tag_kind_enum_values(): # Current TagKind enum after alembic 0023 dropped meta + rating # (operator-retired 2026-05-26). `artist` is still in the enum # for backward-compat with historical rows, though new artist # tags don't get created (Artist row is canonical per FC-2d-vii-c). expected = { "artist", "character", "fandom", "general", "series", "archive", "post", } assert {k.value for k in TagKind} == expected def test_image_record_has_integrity_status(): from backend.app.models import ImageRecord cols = {c.name for c in ImageRecord.__table__.columns} assert "integrity_status" in cols def test_import_task_has_state_columns(): cols = {c.name for c in ImportTask.__table__.columns} for required in ("batch_id", "source_path", "task_type", "status", "result_image_id"): assert required in cols def test_import_settings_singleton_constraint(): constraints = {c.name for c in ImportSettings.__table__.constraints} assert "ck_import_settings_singleton" in constraints