from datetime import datetime, timezone from fastapi.testclient import TestClient from sqlalchemy import create_engine from sqlalchemy.orm import Session from sqlalchemy.pool import StaticPool from central.app.datasets.service import DatasetService from central.app.main import create_app from central.app.models import AnpProductCode, Base, CfopEntry, Dataset, FcpRate, NcmUtribEntry def _client_with_reference_data(): engine = create_engine("sqlite://", connect_args={"check_same_thread": False}, poolclass=StaticPool) Base.metadata.create_all(engine) with Session(engine) as session: dataset = Dataset(kind="CFOP", provider="p", sha256="a" * 64, version_label="v", act="a", source_url="u", status="ACTIVE", record_count=1) session.add(dataset); session.flush() session.add(CfopEntry(dataset_id=dataset.id, code="1101", title="Compra", description="desc")) d2 = Dataset(kind="NCM_UTRIB", provider="p", sha256="b" * 64, version_label="v", act="a", source_url="u", status="ACTIVE", record_count=1) session.add(d2); session.flush() session.add(NcmUtribEntry(dataset_id=d2.id, ncm="01012100", utrib_abbreviation="UN", utrib_description="Unidade")) d3 = Dataset(kind="ANP", provider="p", sha256="c" * 64, version_label="v", act="a", source_url="u", status="ACTIVE", record_count=1) session.add(d3); session.flush() session.add(AnpProductCode(dataset_id=d3.id, cprod_anp="110203073")) d4 = Dataset(kind="FCP", provider="p", sha256="d" * 64, version_label="v", act="a", source_url="u", status="ACTIVE", record_count=1) session.add(d4); session.flush() session.add(FcpRate(dataset_id=d4.id, uf_code="29", uf="BA", uf_name="BAHIA", aliq_1="Fixo:2.00", observacao="obs")) session.commit() app = create_app(session_factory=lambda: Session(engine), bootstrap_token="test-token") return TestClient(app) def test_reference_endpoints_found_and_not_found(): client = _client_with_reference_data() headers = {"Authorization": "Bearer test-token"} assert client.get("/v1/reference/cfop/1101", headers=headers).json()["found"] is True assert client.get("/v1/reference/cfop/9999", headers=headers).json()["found"] is False assert client.get("/v1/reference/ncm_utrib/01012100", headers=headers).json()["found"] is True assert client.get("/v1/reference/ncm_utrib/99999999", headers=headers).json()["found"] is False assert client.get("/v1/reference/anp/110203073", headers=headers).json()["found"] is True assert client.get("/v1/reference/anp/000000000", headers=headers).json()["found"] is False fcp = client.get("/v1/reference/fcp/BA", headers=headers).json() assert fcp["found"] is True assert fcp["aliq_1"] == "Fixo:2.00" assert client.get("/v1/reference/fcp/ZZ", headers=headers).json()["found"] is False