Skip to content

Commit

Permalink
Fix API Tile Metadata JSON response (#1934)
Browse files Browse the repository at this point in the history
* Add test for Tile metadata

* Serialize tile metadata response to json

* Update test_tiles.py
  • Loading branch information
webb-ben authored Feb 12, 2025
1 parent 75f8739 commit d809647
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
6 changes: 3 additions & 3 deletions pygeoapi/api/tiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,6 @@ def get_collection_tiles_data(
err.ogc_exception_code, err.message)


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

return headers, HTTPStatus.OK, content
else:
return headers, HTTPStatus.OK, tiles_metadata
content = to_json(tiles_metadata, api.pretty_print)

return headers, HTTPStatus.OK, content


def tilematrixsets(api: API,
Expand Down
21 changes: 20 additions & 1 deletion tests/api/test_tiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@

import json
from http import HTTPStatus
import pytest

from pygeoapi.api import FORMAT_TYPES, F_HTML
from pygeoapi.api.tiles import (
get_collection_tiles, tilematrixset, tilematrixsets,
get_collection_tiles, tilematrixset,
tilematrixsets, get_collection_tiles_metadata
)
from pygeoapi.models.provider.base import TileMatrixSetEnum

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


@pytest.mark.parametrize('file_format', ['html', 'json', 'tilejson'])
def test_get_collection_tiles_metadata_bad_request(api_, file_format):
req = mock_api_request({'f': file_format})
_, code, _ = get_collection_tiles_metadata(
api_, req, 'obs', 'WorldCRS84Quad')
assert code == HTTPStatus.BAD_REQUEST


@pytest.mark.parametrize('file_format', ['json', 'tilejson'])
def test_get_collection_tiles_metadata_formats(api_, file_format):
req = mock_api_request({'f': file_format})
_, code, response = get_collection_tiles_metadata(
api_, req, 'naturalearth/lakes', matrix_id='WebMercatorQuad')
assert code == HTTPStatus.OK
assert json.loads(response)


def test_tilematrixset(config, api_):
req = mock_api_request()

Expand Down

0 comments on commit d809647

Please sign in to comment.