From bd9051568a136488837a0359d1524acac88ee900 Mon Sep 17 00:00:00 2001 From: EvaBardou <bardou@teklia.com> Date: Thu, 25 Jan 2024 15:42:41 +0100 Subject: [PATCH] Allow to set load_parents parameter while using list_element_metadata helper --- arkindex_worker/worker/metadata.py | 12 ++++++++++-- tests/test_elements_worker/test_metadata.py | 9 +++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/arkindex_worker/worker/metadata.py b/arkindex_worker/worker/metadata.py index 136da154..75e4d6b7 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 3cce81f4..98e99842 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( -- GitLab