Add V1 report handoff summary
This commit is contained in:
@@ -8,7 +8,7 @@ from fastapi.testclient import TestClient
|
||||
|
||||
from app.core.errors import AppError
|
||||
from app.main import app
|
||||
from app.models import Dataset, Export, Project, QualityCheck
|
||||
from app.models import Area, Dataset, Export, Project, QualityCheck
|
||||
from app.schemas.export import ExportCreateResponse
|
||||
from app.services.export_service import ExportService
|
||||
from app.services.storage_service import StorageService
|
||||
@@ -121,6 +121,7 @@ def test_project_metadata_export_persists_json_summary(tmp_path, monkeypatch) ->
|
||||
dataset_id = uuid4()
|
||||
quality_check_id = uuid4()
|
||||
project = Project(id=project_id, name="Demo", region="Kempen", status="active")
|
||||
area = Area(id=uuid4(), project_id=project_id, name="Demo AOI", original_crs="EPSG:4326", area_m2=100.0)
|
||||
dataset = Dataset(
|
||||
id=dataset_id,
|
||||
project_id=project_id,
|
||||
@@ -154,6 +155,7 @@ def test_project_metadata_export_persists_json_summary(tmp_path, monkeypatch) ->
|
||||
db = FakeSession(
|
||||
{
|
||||
(Project, project_id): project,
|
||||
(Area, area.id): area,
|
||||
(Dataset, dataset_id): dataset,
|
||||
(QualityCheck, quality_check_id): quality_check,
|
||||
(Export, previous_export_id): previous_export,
|
||||
@@ -166,16 +168,22 @@ def test_project_metadata_export_persists_json_summary(tmp_path, monkeypatch) ->
|
||||
payload = json.loads(export_path.read_text(encoding="utf-8"))
|
||||
assert response.export_type == "project_metadata_json"
|
||||
assert payload["project"]["id"] == str(project_id)
|
||||
assert payload["areas"][0]["name"] == "Demo AOI"
|
||||
assert payload["readiness_summary"]["overall_state"] == "ready"
|
||||
assert payload["readiness_summary"]["counts"]["area_count"] == 1
|
||||
assert payload["known_limitations"]
|
||||
assert payload["datasets"][0]["id"] == str(dataset_id)
|
||||
assert payload["quality_checks"][0]["id"] == str(quality_check_id)
|
||||
assert payload["exports"][0]["id"] == str(previous_export_id)
|
||||
assert response.metadata_json["export_count"] == 1
|
||||
assert response.metadata_json["readiness_state"] == "ready"
|
||||
|
||||
|
||||
def test_project_report_export_persists_html_artifact(tmp_path, monkeypatch) -> None:
|
||||
project_id = uuid4()
|
||||
dataset_id = uuid4()
|
||||
project = Project(id=project_id, name="Demo <Kempen>", description="QA report", region="Kempen", status="active")
|
||||
area = Area(id=uuid4(), project_id=project_id, name="Demo AOI", original_crs="EPSG:4326", area_m2=100.0)
|
||||
dataset = Dataset(
|
||||
id=dataset_id,
|
||||
project_id=project_id,
|
||||
@@ -196,7 +204,24 @@ def test_project_report_export_persists_html_artifact(tmp_path, monkeypatch) ->
|
||||
created_at=datetime.now(timezone.utc),
|
||||
)
|
||||
export_path = tmp_path / "report.html"
|
||||
db = FakeSession({(Project, project_id): project, (Dataset, dataset_id): dataset, (Export, previous_export_id): previous_export})
|
||||
quality_check = QualityCheck(
|
||||
id=uuid4(),
|
||||
project_id=project_id,
|
||||
reference_dataset_id=dataset_id,
|
||||
check_type="demo_candidate_vs_reference",
|
||||
status="ok",
|
||||
score=0.5,
|
||||
created_at=datetime.now(timezone.utc),
|
||||
)
|
||||
db = FakeSession(
|
||||
{
|
||||
(Project, project_id): project,
|
||||
(Area, area.id): area,
|
||||
(Dataset, dataset_id): dataset,
|
||||
(QualityCheck, quality_check.id): quality_check,
|
||||
(Export, previous_export_id): previous_export,
|
||||
}
|
||||
)
|
||||
monkeypatch.setattr(StorageService, "dataset_export_path", lambda *_args: str(export_path))
|
||||
|
||||
response = ExportService.export_project_report(db, project_id)
|
||||
@@ -204,8 +229,12 @@ def test_project_report_export_persists_html_artifact(tmp_path, monkeypatch) ->
|
||||
html = export_path.read_text(encoding="utf-8")
|
||||
assert response.export_type == "project_report_html"
|
||||
assert response.metadata_json["format"] == "html"
|
||||
assert response.metadata_json["readiness_state"] == "ready"
|
||||
assert "<!doctype html>" in html
|
||||
assert "Demo <Kempen>" in html
|
||||
assert "V1 Readiness Summary" in html
|
||||
assert "Overall state:" in html
|
||||
assert "No live GRB/OSM/Sentinel fetching is performed by the report export." in html
|
||||
assert "reference.geojson" in html
|
||||
assert "Export History (1)" in html
|
||||
assert "project_metadata_json" in html
|
||||
|
||||
Reference in New Issue
Block a user