This commit is contained in:
2026-05-11 00:36:02 +03:30
parent 2a6321a263
commit 1740c20ddb
23 changed files with 1214 additions and 89 deletions
+41 -8
View File
@@ -16,6 +16,7 @@ from location_data.openeo_service import (
OpenEOExecutionError,
_log_raw_payload_summary,
_load_first_json_payload,
_load_job_result_payload,
_resolve_openeo_proxy_url_from_env,
_run_aggregate_spatial_job,
log_openeo_request_summary,
@@ -58,10 +59,10 @@ class OpenEOServiceParsingTests(SimpleTestCase):
"cell-2": {"mean": 15.1},
}
result = parse_aggregate_spatial_response(payload, "lst_c")
result = parse_aggregate_spatial_response(payload, "ndwi")
self.assertEqual(result["cell-1"]["lst_c"], 12.4)
self.assertEqual(result["cell-2"]["lst_c"], 15.1)
self.assertEqual(result["cell-1"]["ndwi"], 12.4)
self.assertEqual(result["cell-2"]["ndwi"], 15.1)
def test_parse_mapping_results_maps_numeric_keys_to_expected_feature_ids(self):
payload = {
@@ -71,12 +72,12 @@ class OpenEOServiceParsingTests(SimpleTestCase):
result = parse_aggregate_spatial_response(
payload,
"lst_c",
"ndwi",
expected_feature_ids=["cell-1", "cell-2"],
)
self.assertEqual(result["cell-1"]["lst_c"], 12.4)
self.assertEqual(result["cell-2"]["lst_c"], 15.1)
self.assertEqual(result["cell-1"]["ndwi"], 12.4)
self.assertEqual(result["cell-2"]["ndwi"], 15.1)
def test_parse_list_results_maps_positional_payload_to_expected_feature_ids(self):
payload = [{"mean": 0.61}, {"mean": 0.47}]
@@ -90,6 +91,18 @@ class OpenEOServiceParsingTests(SimpleTestCase):
self.assertEqual(result["cell-1"]["ndvi"], 0.61)
self.assertEqual(result["cell-2"]["ndvi"], 0.47)
def test_parse_list_results_extracts_scalar_from_nested_list_payloads(self):
payload = [[0.61], [0.47]]
result = parse_aggregate_spatial_response(
payload,
"ndvi",
expected_feature_ids=["cell-1", "cell-2"],
)
self.assertEqual(result["cell-1"]["ndvi"], 0.61)
self.assertEqual(result["cell-2"]["ndvi"], 0.47)
def test_log_raw_payload_summary_warns_for_empty_payload(self):
with self.assertLogs("location_data.openeo_service", level="WARNING") as captured:
summary = _log_raw_payload_summary({}, metric_name="ndvi", job_ref="job-1")
@@ -101,9 +114,9 @@ class OpenEOServiceParsingTests(SimpleTestCase):
payload = {"cell-1": {"foo": 12.4}}
with self.assertLogs("location_data.openeo_service", level="WARNING") as captured:
result = parse_aggregate_spatial_response(payload, "lst_c", job_ref="job-2")
result = parse_aggregate_spatial_response(payload, "ndwi", job_ref="job-2")
self.assertEqual(result["cell-1"]["lst_c"], 12.4)
self.assertEqual(result["cell-1"]["ndwi"], 12.4)
self.assertIn("Feature mismatch for cell=cell-1, available_keys=['foo']", "\n".join(captured.output))
def test_linear_to_db(self):
@@ -347,6 +360,26 @@ class OpenEOConnectionTests(SimpleTestCase):
self.assertEqual(job_ref, "job-123")
process.execute.assert_not_called()
def test_load_job_result_payload_archives_exact_raw_json_file(self):
job = Mock(job_id="job-123")
results = Mock()
job.get_results.return_value = results
raw_json = '{\n "cell-1": {"mean": 0.5}\n}\n'
def write_json(target_dir):
Path(target_dir, "timeseries.json").write_text(raw_json, encoding="utf-8")
results.download_files.side_effect = write_json
with TemporaryDirectory() as archive_dir:
with patch.dict(os.environ, {"OPENEO_PAYLOAD_ARCHIVE_DIR": archive_dir}, clear=False):
payload = _load_job_result_payload(job, metric_name="ndvi")
archive_path = Path(archive_dir) / "job-123__ndvi__timeseries.json"
self.assertTrue(archive_path.exists())
self.assertEqual(archive_path.read_text(encoding="utf-8"), raw_json)
self.assertEqual(payload, {"cell-1": {"mean": 0.5}})
def test_load_first_json_payload_prefers_stac_asset_data_over_metadata(self):
with TemporaryDirectory() as temp_dir:
Path(temp_dir, "item.json").write_text(