Skip to content

Commit d79b6e8

Browse files
Merge branch 'develop' into gtc-3168/datamart-results-table
2 parents 9c9ff6a + 6de227d commit d79b6e8

File tree

4 files changed

+175
-35
lines changed

4 files changed

+175
-35
lines changed

app/routes/datamart/land.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343

4444
@router.get(
45-
"/tree-cover-loss-by-driver",
45+
"/tree_cover_loss_by_driver",
4646
response_class=ORJSONResponse,
4747
response_model=DataMartResourceLinkResponse,
4848
tags=["Land"],
@@ -62,19 +62,19 @@ async def tree_cover_loss_by_driver_search(
6262
dataset_version = DEFAULT_LAND_DATASET_VERSIONS | query_dataset_version
6363

6464
resource_id = _get_resource_id(
65-
"tree-cover-loss-by-driver", geostore_id, canopy_cover, dataset_version
65+
"tree_cover_loss_by_driver", geostore_id, canopy_cover, dataset_version
6666
)
6767

6868
# check if it exists
6969
await _get_resource(resource_id)
7070
link = DataMartResourceLink(
71-
link=f"{API_URL}/v0/land/tree-cover-loss-by-driver/{resource_id}"
71+
link=f"{API_URL}/v0/land/tree_cover_loss_by_driver/{resource_id}"
7272
)
7373
return DataMartResourceLinkResponse(data=link)
7474

7575

7676
@router.get(
77-
"/tree-cover-loss-by-driver/{resource_id}",
77+
"/tree_cover_loss_by_driver/{resource_id}",
7878
response_class=ORJSONResponse,
7979
response_model=TreeCoverLossByDriverResponse,
8080
tags=["Land"],
@@ -100,7 +100,7 @@ async def tree_cover_loss_by_driver_get(
100100

101101

102102
@router.post(
103-
"/tree-cover-loss-by-driver",
103+
"/tree_cover_loss_by_driver",
104104
response_class=ORJSONResponse,
105105
response_model=DataMartResourceLinkResponse,
106106
tags=["Land"],
@@ -130,7 +130,7 @@ async def tree_cover_loss_by_driver_post(
130130
# return 202 accepted
131131
dataset_version = DEFAULT_LAND_DATASET_VERSIONS | data.dataset_version
132132
resource_id = _get_resource_id(
133-
"tree-cover-loss-by-driver",
133+
"tree_cover_loss_by_driver",
134134
data.geostore_id,
135135
data.canopy_cover,
136136
dataset_version,
@@ -147,7 +147,7 @@ async def tree_cover_loss_by_driver_post(
147147
)
148148

149149
link = DataMartResourceLink(
150-
link=f"{API_URL}/v0/land/tree-cover-loss-by-driver/{resource_id}"
150+
link=f"{API_URL}/v0/land/tree_cover_loss_by_driver/{resource_id}"
151151
)
152152
return DataMartResourceLinkResponse(data=link)
153153

app/tasks/datamart/land.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ async def compute_tree_cover_loss_by_driver(
4141

4242
results = await _query_dataset_json(
4343
"umd_tree_cover_loss",
44-
DEFAULT_LAND_DATASET_VERSIONS["umd_tree_cover_loss"],
44+
dataset_version["umd_tree_cover_loss"],
4545
query,
4646
geostore,
4747
dataset_version,

tests_v2/unit/app/routes/datamart/test_land.py

+34-23
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ async def test_get_tree_cover_loss_by_drivers_not_found(
3232
params = {"x-api-key": api_key, "geostore_id": geostore, "canopy_cover": 30}
3333

3434
response = await async_client.get(
35-
"/v0/land/tree-cover-loss-by-driver", headers=headers, params=params
35+
"/v0/land/tree_cover_loss_by_driver", headers=headers, params=params
3636
)
3737

3838
assert response.status_code == 404
3939

4040
resource_id = _get_resource_id(
41-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
41+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
4242
)
4343
mock_get_resources.assert_awaited_with(resource_id)
4444

@@ -58,16 +58,16 @@ async def test_get_tree_cover_loss_by_drivers_found(
5858
headers = {"origin": origin}
5959
params = {"x-api-key": api_key, "geostore_id": geostore, "canopy_cover": 30}
6060
resource_id = _get_resource_id(
61-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
61+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
6262
)
6363

6464
response = await async_client.get(
65-
"/v0/land/tree-cover-loss-by-driver", headers=headers, params=params
65+
"/v0/land/tree_cover_loss_by_driver", headers=headers, params=params
6666
)
6767

6868
assert response.status_code == 200
6969
assert (
70-
f"/v0/land/tree-cover-loss-by-driver/{resource_id}"
70+
f"/v0/land/tree_cover_loss_by_driver/{resource_id}"
7171
in response.json()["data"]["link"]
7272
)
7373
mock_get_resources.assert_awaited_with(resource_id)
@@ -93,7 +93,7 @@ async def test_get_tree_cover_loss_by_drivers_with_overrides(
9393
headers = {"origin": origin}
9494
params = {"x-api-key": api_key, "geostore_id": geostore, "canopy_cover": 30}
9595
resource_id = _get_resource_id(
96-
"tree-cover-loss-by-driver",
96+
"tree_cover_loss_by_driver",
9797
geostore,
9898
30,
9999
{
@@ -104,14 +104,14 @@ async def test_get_tree_cover_loss_by_drivers_with_overrides(
104104
)
105105

106106
response = await async_client.get(
107-
"/v0/land/tree-cover-loss-by-driver?x-api-key={api_key}&geostore_id={geostore_id}&canopy_cover=30&dataset=umd_tree_cover_loss&version=v1.8&dataset=umd_tree_cover_density_2000&version=v1.6",
107+
f"/v0/land/tree_cover_loss_by_driver?geostore_id={geostore}&canopy_cover=30&dataset=umd_tree_cover_loss&version=v1.8&dataset=umd_tree_cover_density_2000&version=v1.6",
108108
headers=headers,
109109
params=params,
110110
)
111111

112112
assert response.status_code == 200
113113
mock_get_resource_id.assert_called_with(
114-
"tree-cover-loss-by-driver",
114+
"tree_cover_loss_by_driver",
115115
uuid.UUID(geostore),
116116
30,
117117
{
@@ -121,7 +121,7 @@ async def test_get_tree_cover_loss_by_drivers_with_overrides(
121121
},
122122
)
123123
assert (
124-
f"/v0/land/tree-cover-loss-by-driver/{resource_id}"
124+
f"/v0/land/tree_cover_loss_by_driver/{resource_id}"
125125
in response.json()["data"]["link"]
126126
)
127127
mock_get_resources.assert_awaited_with(resource_id)
@@ -137,7 +137,11 @@ async def test_post_tree_cover_loss_by_drivers(
137137
origin = payload["domains"][0]
138138

139139
headers = {"origin": origin, "x-api-key": api_key}
140-
payload = {"geostore_id": geostore, "canopy_cover": 30}
140+
payload = {
141+
"geostore_id": geostore,
142+
"canopy_cover": 30,
143+
"dataset_version": {"umd_tree_cover_loss": "v1.8"},
144+
}
141145
with (
142146
patch(
143147
"app.routes.datamart.land._save_pending_resource"
@@ -147,13 +151,14 @@ async def test_post_tree_cover_loss_by_drivers(
147151
) as mock_compute_result,
148152
):
149153
response = await async_client.post(
150-
"/v0/land/tree-cover-loss-by-driver", headers=headers, json=payload
154+
"/v0/land/tree_cover_loss_by_driver", headers=headers, json=payload
151155
)
156+
152157
assert response.status_code == 202
153158

154159
body = response.json()
155160
assert body["status"] == "success"
156-
assert "/v0/land/tree-cover-loss-by-driver/" in body["data"]["link"]
161+
assert "/v0/land/tree_cover_loss_by_driver/" in body["data"]["link"]
157162

158163
resource_id = body["data"]["link"].split("/")[-1]
159164
try:
@@ -166,7 +171,10 @@ async def test_post_tree_cover_loss_by_drivers(
166171
resource_id, "/v0/land/tree-cover-loss-by-driver", api_key
167172
)
168173
mock_compute_result.assert_awaited_with(
169-
resource_id, uuid.UUID(geostore), 30, DEFAULT_LAND_DATASET_VERSIONS
174+
resource_id,
175+
uuid.UUID(geostore),
176+
30,
177+
DEFAULT_LAND_DATASET_VERSIONS | {"umd_tree_cover_loss": "v1.8"},
170178
)
171179

172180

@@ -185,10 +193,10 @@ async def test_get_tree_cover_loss_by_drivers_after_create_with_retry(
185193
"app.routes.datamart.land._get_resource", return_value={"status": "pending"}
186194
):
187195
resource_id = _get_resource_id(
188-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
196+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
189197
)
190198
response = await async_client.get(
191-
f"/v0/land/tree-cover-loss-by-driver/{resource_id}", headers=headers
199+
f"/v0/land/tree_cover_loss_by_driver/{resource_id}", headers=headers
192200
)
193201

194202
assert response.status_code == 200
@@ -210,10 +218,10 @@ async def test_get_tree_cover_loss_by_drivers_after_create_saved(
210218

211219
with patch("app.routes.datamart.land._get_resource", return_value=TreeCoverLossByDriver(**MOCK_RESOURCE)):
212220
resource_id = _get_resource_id(
213-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
221+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
214222
)
215223
response = await async_client.get(
216-
f"/v0/land/tree-cover-loss-by-driver/{resource_id}", headers=headers
224+
f"/v0/land/tree_cover_loss_by_driver/{resource_id}", headers=headers
217225
)
218226

219227
assert response.status_code == 200
@@ -232,20 +240,23 @@ async def test_compute_tree_cover_loss_by_driver(geostore):
232240
patch("app.crud.datamart.update_result") as mock_write_result,
233241
):
234242
resource_id = _get_resource_id(
235-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
243+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
236244
)
237245
geostore_common = await get_geostore(geostore, GeostoreOrigin.rw)
238246

239247
await compute_tree_cover_loss_by_driver(
240-
resource_id, geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
248+
resource_id,
249+
geostore,
250+
30,
251+
DEFAULT_LAND_DATASET_VERSIONS | {"umd_tree_cover_loss": "v1.8"},
241252
)
242253

243254
mock_query_dataset_json.assert_awaited_once_with(
244255
"umd_tree_cover_loss",
245-
"v1.11",
256+
"v1.8",
246257
"SELECT SUM(area__ha) FROM data WHERE umd_tree_cover_density_2000__threshold >= 30 GROUP BY tsc_tree_cover_loss_drivers__driver",
247258
geostore_common,
248-
DEFAULT_LAND_DATASET_VERSIONS,
259+
DEFAULT_LAND_DATASET_VERSIONS | {"umd_tree_cover_loss": "v1.8"},
249260
)
250261

251262
MOCK_RESOURCE["metadata"]["geostore_id"] = geostore
@@ -264,7 +275,7 @@ async def test_compute_tree_cover_loss_by_driver_error(geostore):
264275
patch("app.crud.datamart.update_result") as mock_write_error,
265276
):
266277
resource_id = _get_resource_id(
267-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
278+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
268279
)
269280
geostore_common = await get_geostore(geostore, GeostoreOrigin.rw)
270281

@@ -332,7 +343,7 @@ async def test_compute_tree_cover_loss_by_driver_error(geostore):
332343
"geostore_id": "",
333344
"canopy_cover": 30,
334345
"sources": [
335-
{"dataset": "umd_tree_cover_loss", "version": "v1.11"},
346+
{"dataset": "umd_tree_cover_loss", "version": "v1.8"},
336347
{"dataset": "tsc_tree_cover_loss_drivers", "version": "v2023"},
337348
{"dataset": "umd_tree_cover_density_2000", "version": "v1.8"},
338349
],

0 commit comments

Comments
 (0)