from __future__ import annotations from pathlib import Path from tests.frontend_contract import read_feature 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_feature("detection") 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 "const result = await executeDetection(" in hook assert "effectiveModelId" in hook assert "effectiveModelAssetId" in hook assert "await loadDetectionResults(result.analysis_run_id)" in hook assert "model_id: modelId" in hook assert "model_asset_id: modelAssetId || null" in hook assert "effectiveModelId" in hook assert "effectiveModelAssetId" in hook def test_guided_detection_upload_uses_existing_dataset_persistence_boundary() -> None: hook = read_feature("detection") 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_feature("detection") app = read_feature("shell") 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_feature("detection") hook = read_feature("detection") assert 'aria-label="Kwaliteitscontrole gebouwdetectie"' in lab assert "als kwaliteitscontrole in de database bewaard" in lab assert "detectionApi.compareWithReference" in hook assert "await loadQualityChecks(projectId)" in hook assert "detectionQaRequestSequence.current" in hook assert "Minimale IoU voor een match" in lab assert "detectionQaResult.iou_threshold.toFixed(2)" in lab def test_active_analysis_is_not_presented_as_the_underlying_source_dataset() -> None: app = read_feature("shell") assert "analysisMapLayerActive && mapFeatureCollection" in app assert "`${mapLayerLabel} ยท controle vereist`" in app