Harden V1 demo workflow smoke
This commit is contained in:
@@ -97,6 +97,12 @@ def test_compose_waits_for_healthy_database_and_applies_migrations() -> None:
|
||||
assert "sh /app/docker_start.sh" in compose
|
||||
|
||||
|
||||
def test_compose_mounts_demo_fixtures_for_backend_runtime() -> None:
|
||||
compose = (ROOT / "docker-compose.yml").read_text(encoding="utf-8")
|
||||
|
||||
assert "./fixtures:/app/fixtures:ro" in compose
|
||||
|
||||
|
||||
def test_compose_has_backend_and_frontend_healthchecks() -> None:
|
||||
compose = (ROOT / "docker-compose.yml").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
@@ -27,6 +27,13 @@ def test_demo_export_workflow_script_verifies_export_endpoints() -> None:
|
||||
content = script.read_text(encoding="utf-8")
|
||||
|
||||
assert "/api/v1/demo/workflow" in content
|
||||
assert "/areas" in content
|
||||
assert "/datasets" in content
|
||||
assert "/content" in content
|
||||
assert "/vector/summary" in content
|
||||
assert "GeoJSON Polygon/MultiPolygon geometry" in content
|
||||
assert "precision" in content
|
||||
assert "false_negative_count" in content
|
||||
assert "/api/v1/exports/metadata" in content
|
||||
assert "/api/v1/exports/report" in content
|
||||
assert "/api/v1/exports/geojson" in content
|
||||
|
||||
@@ -55,3 +55,14 @@ def test_demo_workflow_service_uses_explicit_golden_fixtures() -> None:
|
||||
assert DemoWorkflowService.PROJECT_NAME == "GeoIntel Demo - Building QA"
|
||||
assert DemoWorkflowService.REFERENCE_FILENAME == "demo_reference_buildings.geojson"
|
||||
assert DemoWorkflowService.CANDIDATE_FILENAME == "demo_predicted_buildings.geojson"
|
||||
|
||||
|
||||
def test_demo_workflow_service_supports_container_fixture_mount() -> None:
|
||||
service = (DemoWorkflowService._repo_root() / "backend" / "app" / "services" / "demo_workflow_service.py").read_text(encoding="utf-8")
|
||||
|
||||
assert "GEOINTEL_FIXTURES_ROOT" in service
|
||||
assert 'Path("/app/fixtures/golden")' in service
|
||||
assert "reference_payload, reference_raw = DemoWorkflowService._load_fixture" in service
|
||||
assert "project = existing" in service
|
||||
assert "if not reference:" in service
|
||||
assert "if not candidate:" in service
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
|
||||
|
||||
def test_demo_workflow_browser_smoke_script_checks_connected_v1_state() -> None:
|
||||
script = (ROOT / "scripts" / "verify_demo_export_workflow.sh").read_text(encoding="utf-8")
|
||||
|
||||
assert "/api/v1/demo/workflow" in script
|
||||
assert "/api/v1/projects/${project_id}/areas" in script
|
||||
assert "/api/v1/projects/${project_id}/datasets" in script
|
||||
assert "/api/v1/projects/${project_id}/datasets/${candidate_dataset_id}/content" in script
|
||||
assert "/api/v1/projects/${project_id}/datasets/${candidate_dataset_id}/vector/summary" in script
|
||||
assert "GeoJSON Polygon/MultiPolygon geometry" in script
|
||||
assert "Candidate vector summary does not report persisted features" in script
|
||||
|
||||
|
||||
def test_frontend_demo_action_loads_candidate_dataset_details_for_map_layer() -> None:
|
||||
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
|
||||
|
||||
assert "const candidateDataset = projectData?.datasets.find" in app
|
||||
assert "dataset.id === result.candidate_dataset_id" in app
|
||||
assert "await loadDatasetDetails(result.project_id, candidateDataset)" in app
|
||||
Reference in New Issue
Block a user