Skip to content

Commit 4082d79

Browse files
committed
increase test coverage
1 parent d6c166e commit 4082d79

File tree

1 file changed

+63
-32
lines changed

1 file changed

+63
-32
lines changed

tests/extensions/test_storage.py

Lines changed: 63 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22
import random
3+
from copy import deepcopy
34
from string import ascii_letters
45

56
import pytest
@@ -29,6 +30,28 @@ def naip_collection() -> Collection:
2930
return Collection.from_file(NAIP_COLLECTION_URI)
3031

3132

33+
@pytest.fixture
34+
def sample_scheme() -> StorageScheme:
35+
return StorageScheme.create(
36+
type=StorageSchemeType.AWS_S3,
37+
platform="https://{bucket}.s3.{region}.amazonaws.com",
38+
region="us-west-2",
39+
requester_pays=True,
40+
)
41+
42+
43+
@pytest.fixture
44+
def naip_asset(naip_item: Item) -> pystac.Asset:
45+
# Grab a random asset with the platform property
46+
return random.choice(
47+
[
48+
_asset
49+
for _asset in naip_item.assets.values()
50+
if "storage:refs" in _asset.to_dict()
51+
]
52+
)
53+
54+
3255
def test_to_from_dict() -> None:
3356
with open(NAIP_EXAMPLE_URI) as f:
3457
item_dict = json.load(f)
@@ -101,6 +124,16 @@ def test_item_ext_add_to(sample_item: Item) -> None:
101124
assert StorageSchemesExtension.get_schema_uri() in sample_item.stac_extensions
102125

103126

127+
def test_catalog_ext_add_to() -> None:
128+
catalog = pystac.Catalog("stac", "a catalog")
129+
130+
assert StorageSchemesExtension.get_schema_uri() not in catalog.stac_extensions
131+
132+
_ = StorageSchemesExtension.ext(catalog, add_if_missing=True)
133+
134+
assert StorageSchemesExtension.get_schema_uri() in catalog.stac_extensions
135+
136+
104137
def test_asset_ext_add_to(sample_item: Item) -> None:
105138
assert StorageSchemesExtension.get_schema_uri() not in sample_item.stac_extensions
106139
asset = sample_item.assets["thumbnail"]
@@ -207,28 +240,21 @@ def test_schemes_apply(naip_item: Item) -> None:
207240

208241

209242
@pytest.mark.vcr()
210-
def test_refs_apply(naip_item: Item) -> None:
211-
# Grab a random asset with the platform property
212-
asset = random.choice(
213-
[
214-
_asset
215-
for _asset in naip_item.assets.values()
216-
if "storage:refs" in _asset.to_dict()
217-
]
218-
)
243+
def test_refs_apply(naip_asset: pystac.Asset) -> None:
244+
test_refs = ["a_ref", "b_ref"]
245+
246+
storage_ext = StorageRefsExtension.ext(naip_asset)
219247

220-
storage_ext = StorageRefsExtension.ext(asset)
248+
storage_ext.apply(test_refs)
221249

222250
# Get
223-
assert storage_ext.refs == asset.extra_fields.get("storage:refs")
251+
assert storage_ext.refs == test_refs
224252

225253
# Set
226254
new_refs = [random.choice(ascii_letters)]
227255
storage_ext.refs = new_refs
228256
assert storage_ext.refs == new_refs
229257

230-
naip_item.validate()
231-
232258

233259
def test_add_storage_scheme(naip_item: Item) -> None:
234260
storage_ext = naip_item.ext.storage
@@ -255,25 +281,30 @@ def test_add_refs(naip_item: Item) -> None:
255281
assert scheme_name_2 in storage_ext.refs
256282

257283

258-
def test_storage_scheme_create() -> None:
259-
scheme = StorageScheme.create(
260-
type=StorageSchemeType.AWS_S3,
261-
platform="https://{bucket}.s3.{region}.amazonaws.com",
262-
region="us-west-2",
263-
requester_pays=True,
264-
)
284+
def test_storage_scheme_create(sample_scheme: StorageScheme) -> None:
285+
assert sample_scheme.type == StorageSchemeType.AWS_S3
286+
assert sample_scheme.platform == "https://{bucket}.s3.{region}.amazonaws.com"
287+
assert sample_scheme.region == "us-west-2"
288+
assert sample_scheme.requester_pays is True
289+
290+
sample_scheme.type = StorageSchemeType.AZURE
291+
sample_scheme.platform = "https://{account}.blob.core.windows.net"
292+
sample_scheme.region = "eastus"
293+
sample_scheme.account = "account"
294+
sample_scheme.requester_pays = False
295+
296+
assert sample_scheme.type == StorageSchemeType.AZURE
297+
assert sample_scheme.platform == "https://{account}.blob.core.windows.net"
298+
assert sample_scheme.region == "eastus"
299+
assert sample_scheme.account == "account"
300+
assert sample_scheme.requester_pays is False
301+
265302

266-
assert scheme.type == StorageSchemeType.AWS_S3
267-
assert scheme.platform == "https://{bucket}.s3.{region}.amazonaws.com"
268-
assert scheme.region == "us-west-2"
269-
assert scheme.requester_pays is True
303+
def test_storage_scheme_equality(sample_scheme: StorageScheme) -> None:
304+
other = deepcopy(sample_scheme)
305+
assert sample_scheme == other
270306

271-
scheme.type = StorageSchemeType.AZURE
272-
scheme.platform = "https://{account}.blob.core.windows.net"
273-
scheme.region = "eastus"
274-
scheme.requester_pays = False
307+
other.requester_pays = False
308+
assert sample_scheme != other
275309

276-
assert scheme.type == StorageSchemeType.AZURE
277-
assert scheme.platform == "https://{account}.blob.core.windows.net"
278-
assert scheme.region == "eastus"
279-
assert scheme.requester_pays is False
310+
assert sample_scheme != object()

0 commit comments

Comments
 (0)