UPDATE
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user