|
27 | 27 | from tests.utils import TestCases, assert_to_from_dict |
28 | 28 |
|
29 | 29 |
|
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 |
36 | 35 |
|
37 | | - def test_to_from_dict(self) -> None: |
38 | | - self.maxDiff = None |
39 | 36 |
|
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) |
42 | 40 |
|
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" |
46 | 44 |
|
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 |
53 | 101 |
|
54 | | - # test that the parameter is preserved |
55 | | - self.assertEqual(param_dict, item_dict) |
56 | 102 |
|
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 |
61 | 107 |
|
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 |
67 | 112 |
|
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) |
100 | 113 |
|
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() |
110 | 117 |
|
111 | 118 | def test_item_field_order(self) -> None: |
112 | 119 | item = pystac.Item.from_file( |
|
0 commit comments