Skip to content

Commit

Permalink
test(server): opened datetime intervals filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
sbrunato committed Sep 20, 2023
1 parent 49a6b36 commit abfe4ef
Show file tree
Hide file tree
Showing 2 changed files with 159 additions and 1 deletion.
150 changes: 150 additions & 0 deletions tests/units/test_http_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -499,6 +499,37 @@ def test_date_search(self):
geom=box(0, 43, 1, 44, ccw=False),
),
)
self._request_valid(
f"search?collections={self.tested_product_type}&bbox=0,43,1,44&datetime=2018-01-20/..",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
geom=box(0, 43, 1, 44, ccw=False),
),
)
self._request_valid(
f"search?collections={self.tested_product_type}&bbox=0,43,1,44&datetime=../2018-01-25",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
end="2018-01-25T00:00:00",
geom=box(0, 43, 1, 44, ccw=False),
),
)
self._request_valid(
f"search?collections={self.tested_product_type}&bbox=0,43,1,44&datetime=2018-01-20",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
end="2018-01-20T00:00:00",
geom=box(0, 43, 1, 44, ccw=False),
),
)

def test_date_search_from_items(self):
"""Search through eodag server collection/items endpoint using dates filering should return a valid response"""
Expand Down Expand Up @@ -582,6 +613,64 @@ def test_catalog_browse(self):
[it["title"] for it in result.get("links", []) if it["rel"] == "child"],
)

def test_catalog_browse_date_search(self):
"""Browsing catalogs with date filtering through eodag server should return a valid response"""
self._request_valid(
f"catalogs/{self.tested_product_type}/year/2018/month/01/items",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-01T00:00:00",
end="2018-02-01T00:00:00",
),
)
# args & catalog intersection
self._request_valid(
f"catalogs/{self.tested_product_type}/year/2018/month/01/items?datetime=2018-01-20/2018-02-15",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
end="2018-02-01T00:00:00",
),
)
self._request_valid(
f"catalogs/{self.tested_product_type}/year/2018/month/01/items?datetime=2018-01-20/..",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
end="2018-02-01T00:00:00",
),
)
self._request_valid(
f"catalogs/{self.tested_product_type}/year/2018/month/01/items?datetime=../2018-01-05",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-01T00:00:00",
end="2018-01-05T00:00:00",
),
)
self._request_valid(
f"catalogs/{self.tested_product_type}/year/2018/month/01/items?datetime=2018-01-05",
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-05T00:00:00",
end="2018-01-05T00:00:00",
),
)
result = self._request_valid(
f"catalogs/{self.tested_product_type}/year/2018/month/01/items?datetime=../2017-08-01",
)
self.assertEqual(len(result["features"]), 0)

def test_search_item_id_from_catalog(self):
"""Search by id through eodag server /catalog endpoint should return a valid response"""
self._request_valid(
Expand Down Expand Up @@ -650,6 +739,67 @@ def test_intersects_post_search(self):
),
)

def test_date_post_search(self):
"""POST search with datetime filtering through eodag server should return a valid response"""
self._request_valid(
"search",
protocol="POST",
post_data={
"collections": [self.tested_product_type],
"datetime": "2018-01-20/2018-01-25",
},
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
end="2018-01-25T00:00:00",
),
)
self._request_valid(
"search",
protocol="POST",
post_data={
"collections": [self.tested_product_type],
"datetime": "2018-01-20/..",
},
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
),
)
self._request_valid(
"search",
protocol="POST",
post_data={
"collections": [self.tested_product_type],
"datetime": "../2018-01-25",
},
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
end="2018-01-25T00:00:00",
),
)
self._request_valid(
"search",
protocol="POST",
post_data={
"collections": [self.tested_product_type],
"datetime": "2018-01-20",
},
expected_search_kwargs=dict(
productType=self.tested_product_type,
page=1,
items_per_page=DEFAULT_ITEMS_PER_PAGE,
start="2018-01-20T00:00:00",
end="2018-01-20T00:00:00",
),
)

def test_ids_post_search(self):
"""POST search with ids filtering through eodag server should return a valid response"""
self._request_valid(
Expand Down
10 changes: 9 additions & 1 deletion tests/units/test_stac_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,17 @@ def test_get_datetime(self):
self.assertEqual(dtstart, start)
self.assertEqual(dtend, end)

dtstart, dtend = self.rest_utils.get_datetime({"datetime": f"../{end}"})
self.assertEqual(dtstart, None)
self.assertEqual(dtend, end)

dtstart, dtend = self.rest_utils.get_datetime({"datetime": f"{start}/.."})
self.assertEqual(dtstart, start)
self.assertEqual(dtend, None)

dtstart, dtend = self.rest_utils.get_datetime({"datetime": start})
self.assertEqual(dtstart, start)
self.assertIsNone(dtend)
self.assertEqual(dtstart, dtend)

dtstart, dtend = self.rest_utils.get_datetime({"dtstart": start, "dtend": end})
self.assertEqual(dtstart, start)
Expand Down

0 comments on commit abfe4ef

Please sign in to comment.