Files
ThothII/harness/tests/test_schema_columns_cmd.py
T

41 lines
1.5 KiB
Python

import json
from datetime import datetime
from typer.testing import CliRunner
from tht.cli import app # the root Typer app that mounts schema_app as "schema"
from tht.mschema.models import ColumnPhysical, PhysicalSchema, TablePhysical
def _write_catalog(tmp_path):
phys = PhysicalSchema(
database="d", schema="s", introspected_at=datetime(2026, 1, 1),
tables={
"dim_patient": TablePhysical(
comment="Anagrafica",
columns={
"cod_paz": ColumnPhysical(type="bigint", pk=True, comment="Codice paziente"),
"nome": ColumnPhysical(type="text", comment="Nome"),
},
)
},
)
out = tmp_path / "artifacts" / "mschema" / "physical.yaml"
phys.to_yaml(out)
return out
def test_schema_columns_json(tmp_path, monkeypatch):
_write_catalog(tmp_path)
cfg = tmp_path / "workspace.yaml"
cfg.write_text(
"database: {database: d, schema: s, user: u, password: p, transport: direct}\n"
f"paths: {{artifacts: {tmp_path/'artifacts'}, indexes: {tmp_path/'i'}, sessions: {tmp_path/'s'}}}\n"
)
res = CliRunner().invoke(app, ["schema", "columns", "dim_patient", "--json", "-c", str(cfg)])
assert res.exit_code == 0, res.output
data = json.loads(res.output)
assert data["table"] == "dim_patient"
assert data["description"] == "Anagrafica"
assert {"name": "cod_paz", "description": "Codice paziente", "type": "bigint", "pk": True} in data["columns"]