diff --git a/tests/api/test_search.py b/tests/api/test_search.py index d3d4177..15fd19c 100644 --- a/tests/api/test_search.py +++ b/tests/api/test_search.py @@ -1,4 +1,3 @@ -import time from datetime import datetime, timedelta, timezone import pytest @@ -56,7 +55,7 @@ def test_invalid_spatial_search(): def test_temporal_search_single_tailed(): # Test single tailed - utcnow = datetime.now(timezone.utc).replace(microsecond=0, tzinfo=timezone.utc) + utcnow = datetime.now(timezone.utc) utcnow_str = utcnow.isoformat() search = Search(collections=["collection1"], datetime=utcnow_str) assert search.start_date is None @@ -65,7 +64,7 @@ def test_temporal_search_single_tailed(): def test_temporal_search_two_tailed(): # Test two tailed - utcnow = datetime.now(timezone.utc).replace(microsecond=0, tzinfo=timezone.utc) + utcnow = datetime.now(timezone.utc) utcnow_str = utcnow.isoformat() search = Search(collections=["collection1"], datetime=f"{utcnow_str}/{utcnow_str}") assert search.start_date == search.end_date == utcnow @@ -108,12 +107,11 @@ def test_invalid_temporal_search_too_many(): def test_invalid_temporal_search_date_wrong_order(): # End date is before start date start = datetime.now(timezone.utc) - time.sleep(2) - end = datetime.now(timezone.utc) + end = start - timedelta(seconds=100) with pytest.raises(ValidationError): Search( collections=["collection1"], - datetime=f"{end.isoformat()}/{start.isoformat()}", + datetime=f"{start.isoformat()}/{end.isoformat()}", ) diff --git a/tests/test_models.py b/tests/test_models.py index 0a9a22f..b811e96 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -166,6 +166,37 @@ def test_api_context_extension() -> None: ContextExtension(**context) +@pytest.mark.parametrize( + "args", + [ + {"datetime": "2024-01-01T00:00:00Z"}, + { + "datetime": None, + "start_datetime": "2024-01-01T00:00:00Z", + "end_datetime": "2024-01-02T00:00:00Z", + }, + ], +) +def test_item_properties_dates(args) -> None: + ItemProperties(**args) + + +@pytest.mark.parametrize( + "args", + [ + {"datetime": None}, + {"datetime": None, "start_datetime": "2024-01-01T00:00:00Z"}, + {"datetime": None, "end_datetime": "2024-01-01T00:00:00Z"}, + ], +) +def test_item_properties_no_dates(args) -> None: + with pytest.raises( + ValueError, + match="start_datetime and end_datetime must be specified when datetime is null", + ): + ItemProperties(**args) + + def test_declared_model() -> None: class TestProperties(ItemProperties): foo: str