"""Basic post-migration contract checks."""

from __future__ import annotations

import pytest
from sqlalchemy import Connection, text


@pytest.mark.database
@pytest.mark.integration
def test_schema_and_postgis_are_available(db: Connection) -> None:
    assert (
        db.execute(text("SELECT 1 FROM pg_extension WHERE extname = 'postgis'")).scalar_one() == 1
    )
    tables = set(
        db.execute(
            text(
                "SELECT table_name FROM information_schema.tables "
                "WHERE table_schema = 'osm_lead_source'"
            )
        ).scalars()
    )
    assert {
        "source_region",
        "source_snapshot",
        "osm_source_object",
        "source_snapshot_object",
        "osm_source_presence",
        "profile_version",
        "osm_profile_eligibility",
        "business_identity",
        "noco_lead_mapping",
        "adoption_candidate",
        "adoption_candidate_review",
        "noco_source_baseline",
        "reconciliation_run",
        "reconciliation_action",
        "reconciliation_report",
        "osm_lead_tombstone",
    } <= tables


@pytest.mark.database
@pytest.mark.integration
def test_views_expose_distinct_presence_and_eligibility_columns(db: Connection) -> None:
    columns = {
        row["column_name"]
        for row in db.execute(
            text(
                "SELECT column_name FROM information_schema.columns "
                "WHERE table_schema = 'osm_lead_source' "
                "AND table_name = 'v_source_presence_profile_eligibility'"
            )
        ).mappings()
    }
    assert {"source_presence_state", "eligibility_state"} <= columns
