Skip to content

Commit 65da23a

Browse files
committed
Add tests for enum queryables
1 parent bc2930c commit 65da23a

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

stac_fastapi/tests/extensions/test_filter.py

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@
33
import os
44
from os import listdir
55
from os.path import isfile, join
6+
from typing import Callable, Dict
67

78
import pytest
9+
from httpx import AsyncClient
10+
from stac_pydantic import api
11+
12+
from stac_fastapi.core.core import TransactionsClient
13+
14+
from ..conftest import MockRequest
815

916
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
1017

@@ -40,7 +47,6 @@ async def test_filter_extension_collection_link(app_client, load_test_data):
4047

4148
@pytest.mark.asyncio
4249
async def test_search_filters_post(app_client, ctx):
43-
4450
filters = []
4551
pwd = f"{THIS_DIR}/cql2"
4652
for fn in [fn for f in listdir(pwd) if isfile(fn := join(pwd, f))]:
@@ -625,3 +631,65 @@ async def test_search_filter_extension_cql2text_s_disjoint_property(app_client,
625631
assert resp.status_code == 200
626632
resp_json = resp.json()
627633
assert len(resp_json["features"]) == 1
634+
635+
636+
@pytest.mark.asyncio
637+
async def test_queryables_enum_platform(
638+
app_client: AsyncClient,
639+
txn_client: TransactionsClient,
640+
load_test_data: Callable[[str], Dict],
641+
):
642+
# Arrange
643+
# Create collection
644+
collection_data = load_test_data("test_collection.json")
645+
collection_id = collection_data["id"] = "enum-test-collection"
646+
await txn_client.create_collection(
647+
api.Collection(**collection_data), request=MockRequest
648+
)
649+
650+
# Create items with different platform values
651+
item_data_1 = load_test_data("test_item.json")
652+
item_data_1["id"] = "enum-test-item-1"
653+
item_data_1["properties"]["platform"] = "landsat-8"
654+
await txn_client.create_item(
655+
collection_id=collection_id,
656+
item=api.Item(**item_data_1),
657+
request=MockRequest,
658+
)
659+
660+
item_data_2 = load_test_data("test_item.json")
661+
item_data_2["id"] = "enum-test-item-2"
662+
item_data_2["properties"]["platform"] = "sentinel-2"
663+
await txn_client.create_item(
664+
collection_id=collection_id,
665+
item=api.Item(**item_data_2),
666+
request=MockRequest,
667+
)
668+
669+
item_data_3 = load_test_data("test_item.json")
670+
item_data_3["id"] = "enum-test-item-3"
671+
item_data_3["properties"]["platform"] = "landsat-8"
672+
await txn_client.create_item(
673+
collection_id=collection_id,
674+
item=api.Item(**item_data_3),
675+
request=MockRequest,
676+
refresh=True,
677+
)
678+
679+
# Act
680+
# Test queryables endpoint
681+
queryables = (
682+
(await app_client.get(f"/collections/{collection_data['id']}/queryables"))
683+
.raise_for_status()
684+
.json()
685+
)
686+
687+
# Assert
688+
# Verify distinct values (should only have 2 unique values despite 3 items)
689+
properties = queryables["properties"]
690+
platform_info = properties["platform"]
691+
platform_values = platform_info["enum"]
692+
assert set(platform_values) == {"landsat-8", "sentinel-2"}
693+
694+
# Clean up
695+
await txn_client.delete_collection(collection_id)

0 commit comments

Comments
 (0)