22from urllib .parse import urljoin
33from uuid import uuid4
44import pytest
5- from datetime import datetime , timezone , timedelta
5+ from datetime import datetime , timezone , timedelta , UTC
66from geojson_pydantic import Point
77from pytest import Parser , fixture
88
99from stapi_fastapi .models .product import Product , Provider , ProviderRole
10- from stapi_fastapi .main_router import MainRouter
1110from stapi_fastapi .models .shared import Link
12- from stapi_fastapi .models .opportunity import OpportunityProperties , Opportunity
11+ from stapi_fastapi .models .opportunity import OpportunityProperties , Opportunity , OpportunityRequest
1312from stapi_fastapi .types .datetime_interval import DatetimeInterval
1413
1514from collections .abc import Iterator
16- from datetime import UTC , datetime
17- from typing import Callable
18- from urllib .parse import urljoin
19-
20- import pytest
2115from fastapi import FastAPI
2216from fastapi .testclient import TestClient
23- from geojson_pydantic import Point
2417from pydantic import BaseModel
25- from stapi_fastapi .models .opportunity import Opportunity , OpportunityRequest
26- from stapi_fastapi .models .product import Product , Provider , ProviderRole
2718from stapi_fastapi .products_router import ProductRouter
2819
2920from .backend import TestBackend
@@ -38,13 +29,30 @@ def base_url() -> Iterator[str]:
3829def stapi_backend () -> Iterator [TestBackend ]:
3930 yield TestBackend ()
4031
32+ @pytest .fixture
33+ def mock_product_umbra_spotlight (mock_provider_umbra : Provider ) -> Product :
34+ """Fixture for a mock Umbra Spotlight product."""
35+
36+ return Product (
37+ id = str (uuid4 ()),
38+ title = "Umbra Spotlight Product" ,
39+ description = "Test product for umbra spotlight" ,
40+ license = "CC-BY-4.0" ,
41+ keywords = ["test" , "umbra" , "satellite" ],
42+ providers = [mock_provider_umbra ],
43+ links = [
44+ Link (href = "http://example.com" , rel = "self" ),
45+ Link (href = "http://example.com/catalog" , rel = "parent" ),
46+ ],
47+ parameters = UmbraSpotlightProperties
48+ )
4149
4250@pytest .fixture
4351def stapi_client (stapi_backend , base_url : str ) -> Iterator [TestClient ]:
4452 app = FastAPI ()
4553
4654 app .include_router (
47- ProductRouter (backend = stapi_backend ). router ,
55+ ProductRouter (mock_product_umbra_spotlight ) ,
4856 prefix = "" ,
4957 )
5058
@@ -135,23 +143,6 @@ def base_url() -> YieldFixture[str]:
135143 yield "http://stapiserver"
136144
137145
138- @fixture
139- def stapi_backend ():
140- yield TestBackend ()
141-
142-
143- @fixture
144- def stapi_client (stapi_backend , base_url : str ) -> YieldFixture [TestClient ]:
145- app = FastAPI ()
146-
147- app .include_router (
148- MainRouter (backend = stapi_backend ).router ,
149- prefix = "" ,
150- )
151-
152- yield TestClient (app , base_url = f"{ base_url } " )
153-
154-
155146@fixture (scope = "session" )
156147def url_for (base_url : str ) -> YieldFixture [Callable [[str ], str ]]:
157148 def with_trailing_slash (value : str ) -> str :
@@ -175,24 +166,6 @@ def mock_provider_umbra() -> Provider:
175166class UmbraSpotlightProperties (OpportunityProperties ):
176167 datetime : DatetimeInterval
177168
178- @pytest .fixture
179- def mock_product_umbra_spotlight (mock_provider_umbra : Provider ) -> Product :
180- """Fixture for a mock Umbra Spotlight product."""
181-
182- return Product (
183- id = str (uuid4 ()),
184- title = "Umbra Spotlight Product" ,
185- description = "Test product for umbra spotlight" ,
186- license = "CC-BY-4.0" ,
187- keywords = ["test" , "umbra" , "satellite" ],
188- providers = [mock_provider_umbra ],
189- links = [
190- Link (href = "http://example.com" , rel = "self" ),
191- Link (href = "http://example.com/catalog" , rel = "parent" ),
192- ],
193- parameters = UmbraSpotlightProperties
194- )
195-
196169@pytest .fixture
197170def mock_products (mock_product_umbra_spotlight : Product ) -> List [Product ]:
198171 """Fixture to return a list of mock products."""
0 commit comments