"""Smoke tests for fin-hub model registration.""" from fin_hub.models import Budget, BurnRate, Commitment, RunwayProjection, ServiceCost, TokenSpend from hub_core.models.base import Base def test_fin_models_register_on_metadata(): tables = {table.name for table in Base.metadata.sorted_tables} assert "fin_budgets" in tables assert "fin_commitments" in tables assert "fin_burn_rates" in tables assert "fin_runway_projections" in tables assert "fin_token_spends" in tables assert "fin_service_costs" in tables def test_model_classes_importable(): assert Budget.__tablename__ == "fin_budgets" assert Commitment.__tablename__ == "fin_commitments" assert BurnRate.__tablename__ == "fin_burn_rates" assert RunwayProjection.__tablename__ == "fin_runway_projections" assert TokenSpend.__tablename__ == "fin_token_spends" assert ServiceCost.__tablename__ == "fin_service_costs" def test_service_cost_has_external_attribution_seam(): columns = ServiceCost.__table__.columns assert columns["client_id"].nullable is True assert columns["application_id"].nullable is True assert columns["app_instance_id"].nullable is True assert columns["cost_attribution_key"].nullable is True