Skip to content

Commit 00f6421

Browse files
committed
Merge branch 'gtc_3163_use_api_keys_for_gadm' of github.com:wri/gfw-data-api into gtc_3163_use_api_keys_for_gadm
2 parents 6acda59 + da197d2 commit 00f6421

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
@@ -31,7 +31,7 @@
3131

3232

3333
@router.get(
34-
"/tree-cover-loss-by-driver",
34+
"/tree_cover_loss_by_driver",
3535
response_class=ORJSONResponse,
3636
response_model=DataMartResourceLinkResponse,
3737
tags=["Land"],
@@ -51,19 +51,19 @@ async def tree_cover_loss_by_driver_search(
5151
dataset_version = DEFAULT_LAND_DATASET_VERSIONS | query_dataset_version
5252

5353
resource_id = _get_resource_id(
54-
"tree-cover-loss-by-driver", geostore_id, canopy_cover, dataset_version
54+
"tree_cover_loss_by_driver", geostore_id, canopy_cover, dataset_version
5555
)
5656

5757
# check if it exists
5858
await _get_resource(resource_id)
5959
link = DataMartResourceLink(
60-
link=f"{API_URL}/v0/land/tree-cover-loss-by-driver/{resource_id}"
60+
link=f"{API_URL}/v0/land/tree_cover_loss_by_driver/{resource_id}"
6161
)
6262
return DataMartResourceLinkResponse(data=link)
6363

6464

6565
@router.get(
66-
"/tree-cover-loss-by-driver/{resource_id}",
66+
"/tree_cover_loss_by_driver/{resource_id}",
6767
response_class=ORJSONResponse,
6868
response_model=TreeCoverLossByDriverResponse,
6969
tags=["Land"],
@@ -94,7 +94,7 @@ async def tree_cover_loss_by_driver_get(
9494

9595

9696
@router.post(
97-
"/tree-cover-loss-by-driver",
97+
"/tree_cover_loss_by_driver",
9898
response_class=ORJSONResponse,
9999
response_model=DataMartResourceLinkResponse,
100100
tags=["Land"],
@@ -122,7 +122,7 @@ async def tree_cover_loss_by_driver_post(
122122
# return 202 accepted
123123
dataset_version = DEFAULT_LAND_DATASET_VERSIONS | data.dataset_version
124124
resource_id = _get_resource_id(
125-
"tree-cover-loss-by-driver",
125+
"tree_cover_loss_by_driver",
126126
data.geostore_id,
127127
data.canopy_cover,
128128
dataset_version,
@@ -139,7 +139,7 @@ async def tree_cover_loss_by_driver_post(
139139
)
140140

141141
link = DataMartResourceLink(
142-
link=f"{API_URL}/v0/land/tree-cover-loss-by-driver/{resource_id}"
142+
link=f"{API_URL}/v0/land/tree_cover_loss_by_driver/{resource_id}"
143143
)
144144
return DataMartResourceLinkResponse(data=link)
145145

app/tasks/datamart/land.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ async def compute_tree_cover_loss_by_driver(
3636

3737
results = await _query_dataset_json(
3838
"umd_tree_cover_loss",
39-
DEFAULT_LAND_DATASET_VERSIONS["umd_tree_cover_loss"],
39+
dataset_version["umd_tree_cover_loss"],
4040
query,
4141
geostore,
4242
dataset_version,

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

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

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

3737
assert response.status_code == 404
3838

3939
resource_id = _get_resource_id(
40-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
40+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
4141
)
4242
mock_get_resources.assert_awaited_with(resource_id)
4343

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

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

6767
assert response.status_code == 200
6868
assert (
69-
f"/v0/land/tree-cover-loss-by-driver/{resource_id}"
69+
f"/v0/land/tree_cover_loss_by_driver/{resource_id}"
7070
in response.json()["data"]["link"]
7171
)
7272
mock_get_resources.assert_awaited_with(resource_id)
@@ -92,7 +92,7 @@ async def test_get_tree_cover_loss_by_drivers_with_overrides(
9292
headers = {"origin": origin}
9393
params = {"x-api-key": api_key, "geostore_id": geostore, "canopy_cover": 30}
9494
resource_id = _get_resource_id(
95-
"tree-cover-loss-by-driver",
95+
"tree_cover_loss_by_driver",
9696
geostore,
9797
30,
9898
{
@@ -103,14 +103,14 @@ async def test_get_tree_cover_loss_by_drivers_with_overrides(
103103
)
104104

105105
response = await async_client.get(
106-
"/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",
106+
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",
107107
headers=headers,
108108
params=params,
109109
)
110110

111111
assert response.status_code == 200
112112
mock_get_resource_id.assert_called_with(
113-
"tree-cover-loss-by-driver",
113+
"tree_cover_loss_by_driver",
114114
uuid.UUID(geostore),
115115
30,
116116
{
@@ -120,7 +120,7 @@ async def test_get_tree_cover_loss_by_drivers_with_overrides(
120120
},
121121
)
122122
assert (
123-
f"/v0/land/tree-cover-loss-by-driver/{resource_id}"
123+
f"/v0/land/tree_cover_loss_by_driver/{resource_id}"
124124
in response.json()["data"]["link"]
125125
)
126126
mock_get_resources.assert_awaited_with(resource_id)
@@ -136,7 +136,11 @@ async def test_post_tree_cover_loss_by_drivers(
136136
origin = payload["domains"][0]
137137

138138
headers = {"origin": origin, "x-api-key": api_key}
139-
payload = {"geostore_id": geostore, "canopy_cover": 30}
139+
payload = {
140+
"geostore_id": geostore,
141+
"canopy_cover": 30,
142+
"dataset_version": {"umd_tree_cover_loss": "v1.8"},
143+
}
140144
with (
141145
patch(
142146
"app.routes.datamart.land._save_pending_resource"
@@ -146,13 +150,14 @@ async def test_post_tree_cover_loss_by_drivers(
146150
) as mock_compute_result,
147151
):
148152
response = await async_client.post(
149-
"/v0/land/tree-cover-loss-by-driver", headers=headers, json=payload
153+
"/v0/land/tree_cover_loss_by_driver", headers=headers, json=payload
150154
)
155+
151156
assert response.status_code == 202
152157

153158
body = response.json()
154159
assert body["status"] == "success"
155-
assert "/v0/land/tree-cover-loss-by-driver/" in body["data"]["link"]
160+
assert "/v0/land/tree_cover_loss_by_driver/" in body["data"]["link"]
156161

157162
resource_id = body["data"]["link"].split("/")[-1]
158163
try:
@@ -163,7 +168,10 @@ async def test_post_tree_cover_loss_by_drivers(
163168

164169
mock_pending_resource.assert_awaited_with(resource_id)
165170
mock_compute_result.assert_awaited_with(
166-
resource_id, uuid.UUID(geostore), 30, DEFAULT_LAND_DATASET_VERSIONS
171+
resource_id,
172+
uuid.UUID(geostore),
173+
30,
174+
DEFAULT_LAND_DATASET_VERSIONS | {"umd_tree_cover_loss": "v1.8"},
167175
)
168176

169177

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

191199
assert response.status_code == 200
@@ -207,10 +215,10 @@ async def test_get_tree_cover_loss_by_drivers_after_create_saved(
207215

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

216224
assert response.status_code == 200
@@ -229,20 +237,23 @@ async def test_compute_tree_cover_loss_by_driver(geostore):
229237
patch("app.tasks.datamart.land._write_resource") as mock_write_result,
230238
):
231239
resource_id = _get_resource_id(
232-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
240+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
233241
)
234242
geostore_common = await get_geostore(geostore, GeostoreOrigin.rw)
235243

236244
await compute_tree_cover_loss_by_driver(
237-
resource_id, geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
245+
resource_id,
246+
geostore,
247+
30,
248+
DEFAULT_LAND_DATASET_VERSIONS | {"umd_tree_cover_loss": "v1.8"},
238249
)
239250

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

248259
MOCK_RESOURCE["metadata"]["geostore_id"] = geostore
@@ -261,7 +272,7 @@ async def test_compute_tree_cover_loss_by_driver_error(geostore):
261272
patch("app.tasks.datamart.land._write_error") as mock_write_error,
262273
):
263274
resource_id = _get_resource_id(
264-
"tree-cover-loss-by-driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
275+
"tree_cover_loss_by_driver", geostore, 30, DEFAULT_LAND_DATASET_VERSIONS
265276
)
266277
geostore_common = await get_geostore(geostore, GeostoreOrigin.rw)
267278

@@ -327,7 +338,7 @@ async def test_compute_tree_cover_loss_by_driver_error(geostore):
327338
"geostore_id": "",
328339
"canopy_cover": 30,
329340
"sources": [
330-
{"dataset": "umd_tree_cover_loss", "version": "v1.11"},
341+
{"dataset": "umd_tree_cover_loss", "version": "v1.8"},
331342
{"dataset": "tsc_tree_cover_loss_drivers", "version": "v2023"},
332343
{"dataset": "umd_tree_cover_density_2000", "version": "v1.8"},
333344
],

0 commit comments

Comments
 (0)