Skip to content
Snippets Groups Projects
Commit e294c1d1 authored by NolanB's avatar NolanB
Browse files

Modif the create_metadatas() method and its tests

parent 8979c462
No related branches found
No related tags found
No related merge requests found
Pipeline #79505 passed
......@@ -105,18 +105,22 @@ class MetaDataMixin(object):
return metadata["id"]
def create_metadatabulk(
def create_metadatas(
self,
element: Element,
metadata_list: list,
worker_version: str = None,
):
"""
Create multiple metadata on an existing element.
Create multiple metadatas on an existing element.
This method does not support cache.
:param element Element: The element to create multiple metadata on.
:param metadata_list List(MetaDataBulkItem): The list of MetaDataBulkItem.
:param metadata_list List(MetaDataBulkItem): The list m contains the following elements:
- type : MetaType
- name : str
- value : str or number
- entity_id : str or None
"""
assert element and isinstance(
element, Element
......@@ -124,20 +128,47 @@ class MetaDataMixin(object):
assert metadata_list and isinstance(
metadata_list, list
), "type shouldn't be null and should be of type list of MetaType"
), "type shouldn't be null and should be of type list of MetaDataBulkItem"
assert (
len(metadata_list) >= 3
), "The metadata_list does not contain the correct amount of data"
type = metadata_list[0]
name = metadata_list[1]
value = metadata_list[2]
assert type and isinstance(
type, MetaType
), "name shouldn't be null and should be of type MetaType"
assert name and isinstance(
name, str
), "name shouldn't be null and should be of type str"
assert (
value and isinstance(value, str) or value and isinstance(value, float)
), "value shouldn't be null and should be of type str or float"
if len(metadata_list) > 3:
entity_id = metadata_list[3]
assert entity_id is None or isinstance(
entity_id, str
), "entity_id should be None or a str"
metadatabulk = self.request(
"CreateMetaDataBulk",
id=element.id,
body={"worker_version": worker_version, "metadata_list": metadata_list},
body={
"worker_version": worker_version,
"worker_run_id": self.worker_run_id,
"metadata_list": metadata_list,
},
)
return metadatabulk
return metadatabulk["metadata_list"]
def list_metadata(self, element: Element):
"""
List all metadata linked to an element.
This method does not support cache..
This method does not support cache.
:param element Element: The element to list metadata on.
"""
......
......@@ -199,21 +199,40 @@ def test_create_metadata(responses, mock_elements_worker):
@pytest.mark.parametrize(
"worker_version",
[(None), (), ("worker_version")],
"worker_version, metadatas",
[
(None, [MetaType("text"), "fake_name", "fake_value"]),
(None, [MetaType("text"), "fake_name", "fake_value", "fake_entity_id"]),
(None, [MetaType("text"), "fake_name", "fake_value", None]),
(None, [MetaType("text"), "fake_name", 13.5, None]),
(None, [MetaType("text"), "fake_name", 13.5, "fake_entity_id"]),
("worker_version", [MetaType("text"), "fake_name", "fake_value"]),
(
"worker_version",
[MetaType("text"), "fake_name", "fake_value", "fake_entity_id"],
),
("worker_version", [MetaType("text"), "fake_name", "fake_value", None]),
("worker_version", [MetaType("text"), "fake_name", 13.5, None]),
("worker_version", [MetaType("text"), "fake_name", 13.5, "fake_entity_id"]),
],
)
def test_create_metadatabulk(fake_dummy_worker, worker_version):
def test_create_metadatas(fake_dummy_worker, worker_version, metadatas):
element = Element({"id": "element_id"})
metadata_list = [MetaType("text"), "fake_name", "fake_value"]
fake_dummy_worker.worker_run_id = "fake_worker_run_id"
fake_dummy_worker.api_client.add_response(
"CreateMetaDataBulk",
id=element.id,
response={"worker_version": worker_version, "metadata_list": metadata_list},
body={"worker_version": worker_version, "metadata_list": metadata_list},
response={"metadata_list": metadatas},
body={
"worker_version": worker_version,
"worker_run_id": fake_dummy_worker.worker_run_id,
"metadata_list": metadatas,
},
)
assert (
fake_dummy_worker.create_metadatas(element, metadatas, worker_version)
== metadatas
)
assert fake_dummy_worker.create_metadatabulk(
element, metadata_list, worker_version
) == {"worker_version": worker_version, "metadata_list": metadata_list}
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