Skip to content

Commit

Permalink
Add unit tests to stac client
Browse files Browse the repository at this point in the history
  • Loading branch information
TiagoOpenCosmos committed Jan 30, 2025
1 parent 3127e9f commit c55a38e
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from unittest.mock import patch, MagicMock
from datacosmos.stac.stac_client import STACClient
from datacosmos.client import DatacosmosClient


@patch.object(STACClient, "search_items")
def test_fetch_collection_items(mock_search_items):
"""Test fetching all items in a collection."""
mock_search_items.return_value = iter([
MagicMock(id="item-1"),
MagicMock(id="item-2"),
])

client = DatacosmosClient()
stac_client = STACClient(client)

results = list(stac_client.fetch_collection_items("test-collection"))

assert len(results) == 2
assert results[0].id == "item-1"
assert results[1].id == "item-2"
mock_search_items.assert_called_once()
31 changes: 31 additions & 0 deletions tests/unit/datacosmos/stac/stac_client/test_fetch_item.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from unittest.mock import patch, MagicMock
from datacosmos.stac.stac_client import STACClient
from datacosmos.client import DatacosmosClient


@patch.object(DatacosmosClient, "get")
def test_fetch_item(mock_get):
"""Test fetching a single STAC item by ID."""
mock_response = MagicMock()
mock_response.json.return_value = {
"id": "item-1",
"collection": "test-collection",
"type": "Feature",
"stac_version": "1.0.0",
"geometry": {"type": "Point", "coordinates": [0, 0]},
"properties": {
"datetime": "2023-12-01T12:00:00Z"
},
"assets": {},
"links": []
}
mock_get.return_value = mock_response

client = DatacosmosClient()
stac_client = STACClient(client)

item = stac_client.fetch_item("item-1", "test-collection")

assert item.id == "item-1"
assert item.properties["datetime"] == "2023-12-01T12:00:00Z"
mock_get.assert_called_once()
38 changes: 38 additions & 0 deletions tests/unit/datacosmos/stac/stac_client/test_search_items.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from unittest.mock import patch, MagicMock
from datacosmos.stac.stac_client import STACClient
from datacosmos.stac.models.search_parameters import SearchParameters
from datacosmos.client import DatacosmosClient


@patch.object(DatacosmosClient, "post")
def test_search_items(mock_post):
"""Test searching STAC items with filters and pagination."""
mock_response = MagicMock()
mock_response.json.return_value = {
"features": [
{
"id": "item-1",
"collection": "test-collection",
"type": "Feature",
"stac_version": "1.0.0",
"geometry": {"type": "Point", "coordinates": [0, 0]},
"properties": {
"datetime": "2023-12-01T12:00:00Z"
},
"assets": {},
"links": []
}
],
"links": []
}
mock_post.return_value = mock_response

client = DatacosmosClient()
stac_client = STACClient(client)
parameters = SearchParameters(collections=["test-collection"])

results = list(stac_client.search_items(parameters))

assert len(results) == 1
assert results[0].id == "item-1"
mock_post.assert_called_once()

0 comments on commit c55a38e

Please sign in to comment.