perf(map): simplify preclipped area queries
This commit is contained in:
@@ -232,6 +232,82 @@ def test_vector_select_route_uses_persisted_area_geometry_when_requested(monkeyp
|
||||
assert captured["select"]["full_dataset_area"] is False
|
||||
|
||||
|
||||
def test_vector_select_route_uses_bbox_for_dataset_preclipped_to_selected_area(monkeypatch) -> None:
|
||||
from app.api.routes import datasets as dataset_routes
|
||||
|
||||
project_id = uuid.uuid4()
|
||||
dataset_id = uuid.uuid4()
|
||||
area_id = uuid.uuid4()
|
||||
dataset = Dataset(
|
||||
id=dataset_id,
|
||||
project_id=project_id,
|
||||
area_id=area_id,
|
||||
dataset_type="vector",
|
||||
source="fixture",
|
||||
name="Preclipped population",
|
||||
source_metadata={
|
||||
"geometry_clipped_to_area": True,
|
||||
"selection_aggregation": {"method": "feature_count"},
|
||||
},
|
||||
)
|
||||
area = SimpleNamespace(
|
||||
id=area_id,
|
||||
project_id=project_id,
|
||||
geometry=from_shape(box(5.0, 51.0, 5.3, 51.3), srid=4326),
|
||||
)
|
||||
captured: dict[str, dict[str, object]] = {}
|
||||
|
||||
class _AreaSession:
|
||||
@staticmethod
|
||||
def get(model, selected_id): # noqa: ANN001
|
||||
assert model is dataset_routes.Area
|
||||
assert selected_id == area_id
|
||||
return area
|
||||
|
||||
def select_features(_db, **kwargs): # noqa: ANN001
|
||||
captured["select"] = kwargs
|
||||
return {
|
||||
"selection_bbox": {"min_x": 4.9, "min_y": 51.1, "max_x": 5.2, "max_y": 51.2, "crs": "EPSG:4326"},
|
||||
"selection_area_id": str(area_id),
|
||||
"feature_count": 1,
|
||||
"total_feature_count": 1,
|
||||
"limit": 25,
|
||||
"truncated": False,
|
||||
"geojson": {"type": "FeatureCollection", "features": []},
|
||||
}
|
||||
|
||||
def summarize_features(_db, **kwargs): # noqa: ANN001
|
||||
captured["summary"] = kwargs
|
||||
return {
|
||||
"metric_label": "Inwoners",
|
||||
"metric_value": 1,
|
||||
"metric_unit": "inwoners",
|
||||
"aggregation_method": "feature_count",
|
||||
"feature_count": 1,
|
||||
"is_estimate": False,
|
||||
}
|
||||
|
||||
monkeypatch.setattr(dataset_routes.DatasetService, "get_dataset", lambda _db, _id: dataset)
|
||||
monkeypatch.setattr(dataset_routes.VectorFeatureService, "select_features_by_bbox", select_features)
|
||||
monkeypatch.setattr(dataset_routes.VectorFeatureService, "summarize_features_by_bbox", summarize_features)
|
||||
|
||||
dataset_routes.select_vector_features(
|
||||
project_id=project_id,
|
||||
dataset_id=dataset_id,
|
||||
payload=dataset_routes.VectorSelectionRequest(
|
||||
bbox=dataset_routes.VectorSelectionBBox(min_x=4.9, min_y=51.1, max_x=5.2, max_y=51.2),
|
||||
area_id=area_id,
|
||||
limit=25,
|
||||
),
|
||||
db=_AreaSession(),
|
||||
)
|
||||
|
||||
assert captured["select"]["selection_geometry"] is None
|
||||
assert captured["summary"]["selection_geometry"] is None
|
||||
assert captured["select"]["selection_area_id"] == area_id
|
||||
assert captured["select"]["full_dataset_area"] is False
|
||||
|
||||
|
||||
def test_vector_select_route_rejects_area_from_another_project(monkeypatch) -> None:
|
||||
from app.api.routes import datasets as dataset_routes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user