diff --git a/arkindex_worker/worker/metadata.py b/arkindex_worker/worker/metadata.py index 990f6e904768deab115d4d7f749deffec1bdff74..7676e71c20c44c41db85b81f8e057f1a9c77bd1d 100644 --- a/arkindex_worker/worker/metadata.py +++ b/arkindex_worker/worker/metadata.py @@ -129,28 +129,27 @@ class MetaDataMixin(object): metadata_list, list ), "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] + for index, metadata in enumerate(metadata_list): + assert isinstance( + metadata, dict + ), f"Element at index {index} in metadata_list: Should be of type dict" + + type = metadata.get("type") + name = metadata.get("name") + value = metadata.get("value") + entity_id = metadata.get("entity_id") + assert type and isinstance( + type, MetaType + ), f"Element at index {index} in metadata_list: type shouldn't be null and should be of type MetaType" + assert name and isinstance( + name, str + ), f"Element at index {index} in metadata_list: name shouldn't be null and should be of type str" + assert ( + value and isinstance(value, str) or value and isinstance(value, float) + ), f"Element at index {index} in metadata_list: value shouldn't be null and should be of type str or number" assert entity_id is None or isinstance( entity_id, str - ), "entity_id should be None or a str" + ), f"Element at index {index} in metadata_list: entity_id should be None or a str" metadatabulk = self.request( "CreateMetaDataBulk", diff --git a/tests/test_elements_worker/test_metadata.py b/tests/test_elements_worker/test_metadata.py index fb45f968ac484fd56680192ae0eeae6b7eccc4f3..f44bfa631160c825fc5c261972e55d4715578e3b 100644 --- a/tests/test_elements_worker/test_metadata.py +++ b/tests/test_elements_worker/test_metadata.py @@ -201,11 +201,47 @@ def test_create_metadata(responses, mock_elements_worker): @pytest.mark.parametrize( "metadatas", [ - ([MetaType("text"), "fake_name", "fake_value"]), - ([MetaType("text"), "fake_name", "fake_value", "fake_entity_id"]), - ([MetaType("text"), "fake_name", "fake_value", None]), - ([MetaType("text"), "fake_name", 13.5, None]), - ([MetaType("text"), "fake_name", 13.5, "fake_entity_id"]), + ([{"type": MetaType("text"), "name": "fake_name", "value": "fake_value"}]), + ( + [ + { + "type": MetaType("text"), + "name": "fake_name", + "value": "fake_value", + "entity_id": "fake_entity_id", + } + ] + ), + ( + [ + { + "type": MetaType("text"), + "name": "fake_name", + "value": "fake_value", + "entity_id": None, + } + ] + ), + ( + [ + { + "type": MetaType("text"), + "name": "fake_name", + "value": 13.5, + "entity_id": None, + } + ] + ), + ( + [ + { + "type": MetaType("text"), + "name": "fake_name", + "value": 13.5, + "entity_id": "fake_entity_id", + } + ] + ), ], ) def test_create_metadatas(fake_dummy_worker, metadatas):