This commit is contained in:
2026-05-13 22:28:56 +03:30
parent 46fe62fa04
commit 45fee1dfd3
26 changed files with 2329 additions and 878 deletions
@@ -8,6 +8,7 @@ from rest_framework.test import APIClient
from location_data.models import (
AnalysisGridCell,
AnalysisGridObservation,
BlockSubdivision,
RemoteSensingClusterBlock,
RemoteSensingRun,
@@ -193,3 +194,61 @@ class RemoteSensingClusterBlockLiveApiTests(TestCase):
expected_start = expected_end - timedelta(days=6)
self.assertEqual(kwargs["temporal_start"], expected_start)
self.assertEqual(kwargs["temporal_end"], expected_end)
@patch("location_data.views.compute_remote_sensing_metrics")
def test_get_cluster_block_live_uses_database_cache_for_matching_window(self, compute_mock):
cell_1 = AnalysisGridCell.objects.create(
soil_location=self.location,
block_subdivision=self.subdivision,
block_code="block-1",
cell_code="cell-1",
chunk_size_sqm=900,
geometry=self.boundary,
centroid_lat="35.689250",
centroid_lon="51.389250",
)
cell_2 = AnalysisGridCell.objects.create(
soil_location=self.location,
block_subdivision=self.subdivision,
block_code="block-1",
cell_code="cell-2",
chunk_size_sqm=900,
geometry=self.boundary,
centroid_lat="35.689750",
centroid_lon="51.389750",
)
AnalysisGridObservation.objects.create(
cell=cell_1,
run=self.run,
temporal_start=date(2025, 1, 1),
temporal_end=date(2025, 1, 31),
ndvi=0.44,
ndwi=0.12,
soil_vv=0.09,
soil_vv_db=-11.0,
metadata={"backend_name": "openeo"},
)
AnalysisGridObservation.objects.create(
cell=cell_2,
run=self.run,
temporal_start=date(2025, 1, 1),
temporal_end=date(2025, 1, 31),
ndvi=0.64,
ndwi=0.22,
soil_vv=0.19,
soil_vv_db=-7.0,
metadata={"backend_name": "openeo"},
)
response = self.client.get(
f"/remote-sensing/cluster-blocks/{self.cluster_block.uuid}/live/",
data={"temporal_start": "2025-01-01", "temporal_end": "2025-01-31"},
)
self.assertEqual(response.status_code, 200)
payload = response.json()["data"]
self.assertEqual(payload["source"], "database")
self.assertTrue(payload["metadata"]["cache_hit"])
self.assertEqual(payload["summary"]["ndvi_mean"], 0.54)
self.assertEqual(payload["metrics"]["soil_vv_db"], -9.0)
compute_mock.assert_not_called()