from __future__ import annotations from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def read(path: str) -> str: return (ROOT / path).read_text(encoding="utf-8") def test_guided_detection_reuses_canonical_raster_and_detection_apis() -> None: hook = read("frontend/src/hooks/useDetectionWorkflow.ts") assert "prepareAndRunDetection" in hook assert "datasetsApi.rasterTile" in hook assert "datasetsApi.rasterInspect" in hook assert "rasterTileCount" in hook assert "expectedTileCount > maxTiles" in hook assert "tile_size: 512" in hook assert "overlap: 64" in hook assert "detectionApi.getYoloPreflight" in hook assert "await executeDetection(selectedProjectId, datasetId, manifestPath)" in hook assert "await loadDetectionResults(result.analysis_run_id)" in hook assert "model_id: selectedDetectionModelId" in hook assert "model_asset_id: selectedModelAssetId || null" in hook def test_guided_detection_upload_uses_existing_dataset_persistence_boundary() -> None: hook = read("frontend/src/hooks/useDetectionWorkflow.ts") assert "uploadDetectionRaster" in hook assert "datasetsApi.upload" in hook assert "datasetType: 'raster'" in hook assert "datasetRole: 'source'" in hook assert "sourceName: 'manual'" in hook assert "explicit_user_upload" in hook def test_detection_lab_hides_manifest_plumbing_and_exposes_map_first_result_flow() -> None: lab = read("frontend/src/components/detection/DetectionLab.tsx") app = read("frontend/src/App.tsx") assert "Gebouwen zoeken en op kaart tonen" in lab assert 'aria-label="Luchtbeeld toevoegen"' in lab assert 'aria-label="Technische tegelinstellingen"' in lab assert "Worden automatisch voorbereid" in lab assert "Toon op kaart" in lab assert "onPrepareAndRunDetection={runGuidedDetection}" in app assert "setMapContentMode('analysis')" in app assert "setMapLayerVisible(true)" in app assert "setActiveWorkspace('map')" in app def test_detection_qa_remains_persisted_and_primary_not_parallel() -> None: lab = read("frontend/src/components/detection/DetectionLab.tsx") hook = read("frontend/src/hooks/useDetectionWorkflow.ts") assert 'aria-label="Kwaliteitscontrole gebouwdetectie"' in lab assert "als kwaliteitscontrole in de database bewaard" in lab assert "detectionApi.compareWithReference" in hook assert "await loadQualityChecks(selectedProjectId)" in hook