from __future__ import annotations from pathlib import Path from tests.frontend_contract import read_feature ROOT = Path(__file__).resolve().parents[2] def test_app_uses_dataset_workflow_hook() -> None: app = read_feature("shell") assert "useDatasetWorkflow" in app assert "from './hooks/useDatasetWorkflow'" in app assert "datasetsApi.upload" not in app assert "jobsApi" not in app assert "datasetsApi.vectorClip" not in app assert "datasetsApi.rasterTile" not in app def test_dataset_workflow_hook_owns_dataset_api_calls() -> None: hook = read_feature("datasets") assert "datasetsApi.upload" in hook assert "datasetsApi.getContent" in hook assert "datasetsApi.vectorSummary" in hook assert "datasetsApi.vectorClip" in hook assert "datasetsApi.vectorBuffer" in hook assert "datasetsApi.vectorIntersect" in hook assert "datasetsApi.inspectRaster" in hook assert "datasetsApi.rasterPreview" in hook assert "datasetsApi.rasterStats" in hook assert "datasetsApi.rasterReproject" in hook assert "datasetsApi.rasterClip" in hook assert "datasetsApi.rasterTile" in hook assert "datasetsApi.rasterNdvi" in hook assert "datasetsApi.rasterNdwi" in hook assert "datasetsApi.rasterNdbi" in hook assert "datasetsApi.refreshMetadata" in hook assert "jobsApi.list" in hook def test_app_still_wires_dataset_ui_callbacks() -> None: app = read_feature("shell") dataset_panel = read_feature("datasets") detail_panel = read_feature("datasets") assert " runVectorIntersect(availableVectorTargets)" in app assert '
onLoadDatasetDetails(selectedProjectId ?? '', dataset)}" in dataset_panel assert "onClick={() => onRefreshMetadata(dataset.id)}" in dataset_panel assert "onRunRasterInspect={onRunRasterInspect}" in detail_panel assert "onRunVectorIntersect={onRunVectorIntersect}" in detail_panel