from __future__ import annotations from sqlalchemy import create_engine, inspect from app.db.schema_ownership import MIGRATION_OWNED_TABLES, create_legacy_schema def test_create_legacy_schema_never_creates_migration_owned_tables() -> None: engine = create_engine("sqlite+pysqlite:///:memory:") try: create_legacy_schema(engine) table_names = set(inspect(engine).get_table_names()) finally: engine.dispose() assert MIGRATION_OWNED_TABLES == frozenset( { "ai_application_preview_decisions", "ai_decision_feedback", "ai_decisions", "approval_action_ledgers", "approval_task_events", "approval_tasks", "agent_asset_release_audit_samples", "agent_asset_release_labels", "agent_asset_release_observations", "auth_sessions", "attachment_association_jobs", "business_events", "commercial_cost_events", "commercial_admin_events", "commercial_billing_periods", "commercial_entitlements", "commercial_runtime_reservations", "expense_case_links", "expense_cases", "financial_connector_configs", "financial_connector_config_events", "financial_connector_events", "financial_connector_operational_events", "knowledge_onlyoffice_sessions", "memory_entries", "memory_evidence_links", "risk_observations", "risk_observation_feedback", "risk_disposition_events", "risk_dispositions", "profile_baseline_snapshots", "payment_reconciliation_cases", "payment_reconciliation_events", "savings_evidence_links", "savings_events", "savings_opportunities", "savings_realizations", "tenant_commercial_plans", "tenant_finance_report_configs", "tenant_finance_report_runs", "tenant_subscriptions", "tenants", "usage_meter_events", "few_shot_samples", "workflow_outcomes", } ) assert table_names assert table_names.isdisjoint(MIGRATION_OWNED_TABLES)