Skip to content

Commit 7097b59

Browse files
committed
Add test for migration and checks of multiple extension versions
1 parent 4fc40b1 commit 7097b59

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pystac/extensions/classification.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ def bitfields(self, v: Optional[List[Bitfield]]) -> None:
641641

642642
class ClassificationExtensionHooks(ExtensionHooks):
643643
schema_uri: str = SCHEMA_URI_PATTERN.format(version=DEFAULT_VERSION)
644-
prev_extension_ids = {"classification"}
644+
prev_extension_ids = set(ClassificationExtension.get_schema_uris()) - set([ClassificationExtension.get_schema_uri()])
645645
stac_object_types = {pystac.STACObjectType.ITEM}
646646

647647
def migrate(

tests/extensions/test_classification.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
from pystac import Collection, Item
1212
from pystac.extensions.classification import (
1313
CLASSES_PROP,
14+
SCHEMA_URI_PATTERN,
15+
DEFAULT_VERSION,
16+
SUPPORTED_VERSIONS,
1417
Bitfield,
1518
Classification,
1619
ClassificationExtension,
@@ -293,3 +296,22 @@ def test_item_assets_extension(collection: Collection) -> None:
293296
]
294297
ext = ClassificationExtension.ext(item_asset)
295298
ext.__repr__()
299+
300+
301+
def test_older_extension_version(landsat_item: Item) -> None:
302+
OLD_VERSION = list(set(SUPPORTED_VERSIONS) - set([DEFAULT_VERSION]))[0]
303+
new = SCHEMA_URI_PATTERN.format(version=DEFAULT_VERSION)
304+
old = SCHEMA_URI_PATTERN.format(version=OLD_VERSION)
305+
306+
stac_extensions = set(landsat_item.stac_extensions)
307+
stac_extensions.remove(new)
308+
stac_extensions.add(old)
309+
item_as_dict = landsat_item.to_dict(include_self_link=False, transform_hrefs=False)
310+
item_as_dict["stac_extensions"] = list(stac_extensions)
311+
item = Item.from_dict(item_as_dict)
312+
assert ClassificationExtension.has_extension(item)
313+
assert old in item.stac_extensions
314+
315+
migrated_item = pystac.Item.from_dict(item_as_dict, migrate=True)
316+
assert ClassificationExtension.has_extension(migrated_item)
317+
assert new in migrated_item.stac_extensions

0 commit comments

Comments
 (0)