Skip to content

Commit d809647

Browse files
authored
Fix API Tile Metadata JSON response (#1934)
* Add test for Tile metadata * Serialize tile metadata response to json * Update test_tiles.py
1 parent 75f8739 commit d809647

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

pygeoapi/api/tiles.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ def get_collection_tiles_data(
262262
err.ogc_exception_code, err.message)
263263

264264

265-
# TODO: no test for this function?
266265
def get_collection_tiles_metadata(
267266
api: API, request: APIRequest,
268267
dataset=None, matrix_id=None) -> Tuple[dict, int, str]:
@@ -328,9 +327,10 @@ def get_collection_tiles_metadata(
328327
'collections/tiles/metadata.html',
329328
tiles_metadata, request.locale)
330329

331-
return headers, HTTPStatus.OK, content
332330
else:
333-
return headers, HTTPStatus.OK, tiles_metadata
331+
content = to_json(tiles_metadata, api.pretty_print)
332+
333+
return headers, HTTPStatus.OK, content
334334

335335

336336
def tilematrixsets(api: API,

tests/api/test_tiles.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@
3434

3535
import json
3636
from http import HTTPStatus
37+
import pytest
3738

3839
from pygeoapi.api import FORMAT_TYPES, F_HTML
3940
from pygeoapi.api.tiles import (
40-
get_collection_tiles, tilematrixset, tilematrixsets,
41+
get_collection_tiles, tilematrixset,
42+
tilematrixsets, get_collection_tiles_metadata
4143
)
4244
from pygeoapi.models.provider.base import TileMatrixSetEnum
4345

@@ -83,6 +85,23 @@ def test_tilematrixsets(config, api_):
8385
assert rsp_headers['Content-Language'] == 'en-US'
8486

8587

88+
@pytest.mark.parametrize('file_format', ['html', 'json', 'tilejson'])
89+
def test_get_collection_tiles_metadata_bad_request(api_, file_format):
90+
req = mock_api_request({'f': file_format})
91+
_, code, _ = get_collection_tiles_metadata(
92+
api_, req, 'obs', 'WorldCRS84Quad')
93+
assert code == HTTPStatus.BAD_REQUEST
94+
95+
96+
@pytest.mark.parametrize('file_format', ['json', 'tilejson'])
97+
def test_get_collection_tiles_metadata_formats(api_, file_format):
98+
req = mock_api_request({'f': file_format})
99+
_, code, response = get_collection_tiles_metadata(
100+
api_, req, 'naturalearth/lakes', matrix_id='WebMercatorQuad')
101+
assert code == HTTPStatus.OK
102+
assert json.loads(response)
103+
104+
86105
def test_tilematrixset(config, api_):
87106
req = mock_api_request()
88107

0 commit comments

Comments
 (0)