Skip to content

Commit f03c63a

Browse files
committed
Add test of the TiTiler API with data
1 parent 4700ed0 commit f03c63a

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from collections.abc import AsyncGenerator
2+
3+
import pytest_asyncio
4+
5+
from jupyter_xarray_tiler.titiler import _get_server
6+
7+
8+
async def _reset_titiler_api_for_testing() -> None:
9+
# Shutdown the previous server
10+
server = _get_server()
11+
await server.stop_tile_server()
12+
# Clear the cache so next time we'll get a fresh one
13+
_get_server.cache_clear()
14+
15+
16+
@pytest_asyncio.fixture
17+
async def clean_titiler_api() -> AsyncGenerator[None]:
18+
"""Ensure a test's usage of the titiler API is not influenced by other tests.
19+
20+
I.e., the test will receive a fresh TiTiler server.
21+
"""
22+
await _reset_titiler_api_for_testing()
23+
yield
24+
await _reset_titiler_api_for_testing()
Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,32 @@
11
import pytest
2+
from xarray import DataArray
23

3-
from jupyter_xarray_tiler.titiler import _get_server, get_routes
4+
from jupyter_xarray_tiler.titiler import (
5+
_get_server,
6+
add_data_array,
7+
get_routes,
8+
)
49

510

11+
def test_singleton_ish() -> None:
12+
"""Test that the API only uses one TiTiler server instance."""
13+
assert id(_get_server()) == id(_get_server())
14+
assert _get_server() is _get_server()
15+
16+
17+
@pytest.mark.usefixtures("clean_titiler_api")
618
def test_get_routes_raises_before_server_started() -> None:
719
"""Test that get_routes raises an error if called before initialization."""
820
with pytest.raises(RuntimeError):
921
get_routes()
1022

1123

12-
def test_singleton_ish() -> None:
13-
"""Test that the API only uses one TiTiler server instance."""
14-
assert id(_get_server()) == id(_get_server())
15-
assert _get_server() is _get_server()
24+
@pytest.mark.usefixtures("clean_titiler_api")
25+
async def test_add_data_array_creates_routes(
26+
random_data_array: DataArray,
27+
) -> None:
28+
await add_data_array(
29+
data_array=random_data_array,
30+
colormap_name="viridis",
31+
)
32+
assert len(get_routes()) > 0

0 commit comments

Comments
 (0)