Skip to content

Commit ee62773

Browse files
committed
993 convert test_item.py to pytest
1 parent 65857a2 commit ee62773

File tree

1 file changed

+78
-71
lines changed

1 file changed

+78
-71
lines changed

tests/test_item.py

Lines changed: 78 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -27,86 +27,93 @@
2727
from tests.utils import TestCases, assert_to_from_dict
2828

2929

30-
class ItemTest(unittest.TestCase):
31-
def get_example_item_dict(self) -> dict[str, Any]:
32-
m = TestCases.get_path("data-files/item/sample-item.json")
33-
with open(m) as f:
34-
item_dict: dict[str, Any] = json.load(f)
35-
return item_dict
30+
def get_example_item_dict() -> dict[str, Any]:
31+
m = TestCases.get_path("data-files/item/sample-item.json")
32+
with open(m) as f:
33+
item_dict: dict[str, Any] = json.load(f)
34+
return item_dict
3635

37-
def test_to_from_dict(self) -> None:
38-
self.maxDiff = None
3936

40-
item_dict = self.get_example_item_dict()
41-
param_dict = deepcopy(item_dict)
37+
def test_to_from_dict() -> None:
38+
item_dict = get_example_item_dict()
39+
param_dict = deepcopy(item_dict)
4240

43-
assert_to_from_dict(Item, param_dict)
44-
item = Item.from_dict(param_dict)
45-
self.assertEqual(item.id, "CS3-20160503_132131_05")
41+
assert_to_from_dict(Item, param_dict)
42+
item = Item.from_dict(param_dict)
43+
assert item.id == "CS3-20160503_132131_05"
4644

47-
# test asset creation additional field(s)
48-
self.assertEqual(
49-
item.assets["analytic"].extra_fields["product"],
50-
"http://cool-sat.com/catalog/products/analytic.json",
51-
)
52-
self.assertEqual(len(item.assets["thumbnail"].extra_fields), 0)
45+
# test asset creation additional field(s)
46+
assert (
47+
item.assets["analytic"].extra_fields["product"]
48+
== "http://cool-sat.com/catalog/products/analytic.json"
49+
)
50+
assert len(item.assets["thumbnail"].extra_fields) == 0
51+
52+
# test that the parameter is preserved
53+
assert param_dict == item_dict
54+
55+
# assert that the parameter is preserved regardless of preserve_dict
56+
Item.from_dict(param_dict, preserve_dict=False)
57+
assert param_dict == item_dict
58+
59+
60+
def test_from_dict_set_root() -> None:
61+
item_dict = get_example_item_dict()
62+
catalog = pystac.Catalog(id="test", description="test desc")
63+
item = Item.from_dict(item_dict, root=catalog)
64+
assert item.get_root() is catalog
65+
66+
67+
def test_set_self_href_does_not_break_asset_hrefs() -> None:
68+
cat = TestCases.case_2()
69+
for item in cat.get_items(recursive=True):
70+
for asset in item.assets.values():
71+
if is_absolute_href(asset.href):
72+
asset.href = f"./{os.path.basename(asset.href)}"
73+
item.set_self_href("http://example.com/item.json")
74+
for asset in item.assets.values():
75+
assert is_absolute_href(asset.href)
76+
77+
78+
def test_set_self_href_none_ignores_relative_asset_hrefs() -> None:
79+
cat = TestCases.case_2()
80+
for item in cat.get_items(recursive=True):
81+
for asset in item.assets.values():
82+
if is_absolute_href(asset.href):
83+
asset.href = f"./{os.path.basename(asset.href)}"
84+
item.set_self_href(None)
85+
for asset in item.assets.values():
86+
assert not is_absolute_href(asset.href)
87+
88+
89+
def test_asset_absolute_href() -> None:
90+
item_path = TestCases.get_path("data-files/item/sample-item.json")
91+
item_dict = get_example_item_dict()
92+
item = Item.from_dict(item_dict)
93+
item.set_self_href(item_path)
94+
rel_asset = Asset("./data.geojson")
95+
rel_asset.set_owner(item)
96+
expected_href = make_posix_style(
97+
os.path.abspath(os.path.join(os.path.dirname(item_path), "./data.geojson"))
98+
)
99+
actual_href = rel_asset.get_absolute_href()
100+
assert expected_href == actual_href
53101

54-
# test that the parameter is preserved
55-
self.assertEqual(param_dict, item_dict)
56102

57-
# assert that the parameter is preserved regardless of
58-
# preserve_dict
59-
_ = Item.from_dict(param_dict, preserve_dict=False)
60-
self.assertEqual(param_dict, item_dict)
103+
def test_asset_absolute_href_no_item_self() -> None:
104+
item_dict = get_example_item_dict()
105+
item = Item.from_dict(item_dict)
106+
assert item.get_self_href() is None
61107

62-
def test_from_dict_set_root(self) -> None:
63-
item_dict = self.get_example_item_dict()
64-
catalog = pystac.Catalog(id="test", description="test desc")
65-
item = Item.from_dict(item_dict, root=catalog)
66-
self.assertIs(item.get_root(), catalog)
108+
rel_asset = Asset("./data.geojson")
109+
rel_asset.set_owner(item)
110+
actual_href = rel_asset.get_absolute_href()
111+
assert actual_href is None
67112

68-
def test_set_self_href_does_not_break_asset_hrefs(self) -> None:
69-
cat = TestCases.case_2()
70-
for item in cat.get_items(recursive=True):
71-
for asset in item.assets.values():
72-
if is_absolute_href(asset.href):
73-
asset.href = f"./{os.path.basename(asset.href)}"
74-
item.set_self_href("http://example.com/item.json")
75-
for asset in item.assets.values():
76-
self.assertTrue(is_absolute_href(asset.href))
77-
78-
def test_set_self_href_none_ignores_relative_asset_hrefs(self) -> None:
79-
cat = TestCases.case_2()
80-
for item in cat.get_items(recursive=True):
81-
for asset in item.assets.values():
82-
if is_absolute_href(asset.href):
83-
asset.href = f"./{os.path.basename(asset.href)}"
84-
item.set_self_href(None)
85-
for asset in item.assets.values():
86-
self.assertFalse(is_absolute_href(asset.href))
87-
88-
def test_asset_absolute_href(self) -> None:
89-
item_path = TestCases.get_path("data-files/item/sample-item.json")
90-
item_dict = self.get_example_item_dict()
91-
item = Item.from_dict(item_dict)
92-
item.set_self_href(item_path)
93-
rel_asset = Asset("./data.geojson")
94-
rel_asset.set_owner(item)
95-
expected_href = make_posix_style(
96-
os.path.abspath(os.path.join(os.path.dirname(item_path), "./data.geojson"))
97-
)
98-
actual_href = rel_asset.get_absolute_href()
99-
self.assertEqual(expected_href, actual_href)
100113

101-
def test_asset_absolute_href_no_item_self(self) -> None:
102-
item_dict = self.get_example_item_dict()
103-
item = Item.from_dict(item_dict)
104-
assert item.get_self_href() is None
105-
106-
rel_asset = Asset("./data.geojson")
107-
rel_asset.set_owner(item)
108-
actual_href = rel_asset.get_absolute_href()
109-
self.assertEqual(None, actual_href)
114+
class ItemTest(unittest.TestCase):
115+
def get_example_item_dict(self) -> dict[str, Any]:
116+
return get_example_item_dict()
110117

111118
def test_item_field_order(self) -> None:
112119
item = pystac.Item.from_file(

0 commit comments

Comments
 (0)