diff --git a/arkindex_worker/worker/metadata.py b/arkindex_worker/worker/metadata.py index 136da1547836151351dab41a34269001b40a4d82..75e4d6b751f663aa7a8bcc14d75a60fd2d5fadb7 100644 --- a/arkindex_worker/worker/metadata.py +++ b/arkindex_worker/worker/metadata.py @@ -178,16 +178,24 @@ class MetaDataMixin: return created_metadata_list def list_element_metadata( - self, element: Element | CachedElement + self, element: Element | CachedElement, load_parents: bool | None = None ) -> list[dict[str, str]]: """ List all metadata linked to an element. This method does not support cache. :param element: The element to list metadata on. + :param load_parents: Also include all metadata from the element's parents in the response. """ assert element and isinstance( element, Element | CachedElement ), "element shouldn't be null and should be of type Element or CachedElement" - return self.api_client.paginate("ListElementMetaData", id=element.id) + query_params = {} + if load_parents is not None: + assert isinstance(load_parents, bool), "load_parents should be of type bool" + query_params["load_parents"] = load_parents + + return self.api_client.paginate( + "ListElementMetaData", id=element.id, **query_params + ) diff --git a/tests/test_elements_worker/test_metadata.py b/tests/test_elements_worker/test_metadata.py index 3cce81f4ac194074448d81e11e5c39fc8513bec6..98e9984223988b8dc4d1d7b5715c9c95bc6b3754 100644 --- a/tests/test_elements_worker/test_metadata.py +++ b/tests/test_elements_worker/test_metadata.py @@ -508,6 +508,15 @@ def test_create_metadatas_api_error(responses, mock_elements_worker): ] +def test_list_element_metadata_wrong_load_parents(fake_dummy_worker): + element = Element({"id": "element_id"}) + with pytest.raises(AssertionError, match="load_parents should be of type bool"): + fake_dummy_worker.list_element_metadata( + element=element, + load_parents="not bool", + ) + + def test_list_element_metadata(fake_dummy_worker): element = Element({"id": "element_id"}) fake_dummy_worker.api_client.add_response(