From f17c6102b335e41168809db79f96222fc69894f8 Mon Sep 17 00:00:00 2001 From: Alexander Schlemmer <a.schlemmer@indiscale.com> Date: Fri, 31 Jan 2025 17:47:26 +0100 Subject: [PATCH] TST: fixed tests due to changes to rocrate feature --- src/caoscrawler/converters/rocrate.py | 12 ++++++++---- unittests/test_rocrate_converter.py | 19 +++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/caoscrawler/converters/rocrate.py b/src/caoscrawler/converters/rocrate.py index fe40394..f0140fa 100644 --- a/src/caoscrawler/converters/rocrate.py +++ b/src/caoscrawler/converters/rocrate.py @@ -200,12 +200,16 @@ class ROCrateEntityConverter(Converter): # This is - according to the standard - only allowed, if it's flat, i.e. # it contains a single element with key == "@id" and the id as value which # is supposed to be dereferenced: - if not (len(value) == 1 and "@id" in eprops): + if not (len(value) == 1 and "@id" in value): raise RuntimeError("The JSON-LD is not flat.") - children.append( - ROCrateEntity(element.folder, element.entity.crate.dereference( - value["@id"]))) # TODO: tests missing! + dereferenced = element.entity.crate.dereference(value["@id"]) + if dereferenced is not None: + children.append( + ROCrateEntity(element.folder, dereferenced)) + else: + # This is just an external ID and will be added as simple DictElement + children.append(convert_basic_element(value, name)) else: children.append(convert_basic_element(value, name)) diff --git a/unittests/test_rocrate_converter.py b/unittests/test_rocrate_converter.py index ebf585f..02f0f60 100644 --- a/unittests/test_rocrate_converter.py +++ b/unittests/test_rocrate_converter.py @@ -144,8 +144,8 @@ match_properties: assert isinstance(children[0], TextElement) assert children[0].name == "@id" assert children[0].value == "ro-crate-metadata.json" - assert isinstance(children[5], DictElement) - assert children[5].value == {'@id': 'https://kadi.iam.kit.edu'} + assert isinstance(children[5], ROCrateEntity) + assert children[5].name == "https://kadi.iam.kit.edu" def test_file(eln_entities): @@ -184,13 +184,20 @@ match_properties: assert match is not None children = ds_parts.create_children(GeneralStore(), ent_parts) + # Number of children = number of properties + number of parts + + # number of variables measured + number of files + assert len(children) == (len(ent_parts.entity.properties()) + + len(ent_parts.entity.properties()["hasPart"]) + + len(ent_parts.entity.properties()["variableMeasured"])) - # Number of children = number of properties + number of parts: - assert len(children) == len(ent_parts.entity.properties()) + 4 entity_children = [f for f in children if isinstance(f, ROCrateEntity)] - assert len(entity_children) == 4 + assert len(entity_children) == 13 + file_counter = 0 + for f in entity_children: - assert isinstance(f.entity, rocrate.model.file.File) + if isinstance(f.entity, rocrate.model.file.File): + file_counter += 1 + assert file_counter == 4 def test_scanner(): -- GitLab