Skip to content
Snippets Groups Projects
Commit 4e71ddbd authored by Eva Bardou's avatar Eva Bardou :frog: Committed by Yoann Schneider
Browse files

Allow to set `load_parents` parameter while using `list_element_metadata` helper

parent 8d6f4b69
No related branches found
No related tags found
1 merge request!485Allow to set `load_parents` parameter while using `list_element_metadata` helper
Pipeline #154709 passed
......@@ -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
)
......@@ -508,14 +508,23 @@ 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(
"ListElementMetaData",
id=element.id,
response={"id": "metadata_id"},
response=[{"id": "metadata_id"}],
)
assert fake_dummy_worker.list_element_metadata(element) == {"id": "metadata_id"}
assert fake_dummy_worker.list_element_metadata(element) == [{"id": "metadata_id"}]
assert len(fake_dummy_worker.api_client.history) == 1
assert len(fake_dummy_worker.api_client.responses) == 0
......@@ -527,11 +536,28 @@ def test_list_element_metadata_cached_element(mock_elements_worker_with_cache):
mock_elements_worker_with_cache.api_client.add_response(
"ListElementMetaData",
id="element_id",
response={"id": "metadata_id"},
response=[{"id": "metadata_id"}],
)
assert mock_elements_worker_with_cache.list_element_metadata(element) == {
"id": "metadata_id"
}
assert mock_elements_worker_with_cache.list_element_metadata(element) == [
{"id": "metadata_id"}
]
assert len(mock_elements_worker_with_cache.api_client.history) == 1
assert len(mock_elements_worker_with_cache.api_client.responses) == 0
def test_list_element_metadata_with_load_parents(fake_dummy_worker):
element = Element({"id": "element_id"})
fake_dummy_worker.api_client.add_response(
"ListElementMetaData",
id=element.id,
load_parents=True,
response=[{"id": "metadata_id"}, {"id": "parent_metadata_id"}],
)
assert fake_dummy_worker.list_element_metadata(element, load_parents=True) == [
{"id": "metadata_id"},
{"id": "parent_metadata_id"},
]
assert len(fake_dummy_worker.api_client.history) == 1
assert len(fake_dummy_worker.api_client.responses) == 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment