arkindex-base-worker 0.4.0b1__py3-none-any.whl → 0.4.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {arkindex_base_worker-0.4.0b1.dist-info → arkindex_base_worker-0.4.0b2.dist-info}/METADATA +1 -1
- {arkindex_base_worker-0.4.0b1.dist-info → arkindex_base_worker-0.4.0b2.dist-info}/RECORD +19 -19
- arkindex_worker/image.py +2 -1
- arkindex_worker/utils.py +76 -0
- arkindex_worker/worker/__init__.py +3 -2
- arkindex_worker/worker/classification.py +31 -15
- arkindex_worker/worker/element.py +24 -10
- arkindex_worker/worker/entity.py +25 -11
- arkindex_worker/worker/metadata.py +18 -8
- arkindex_worker/worker/transcription.py +38 -17
- tests/test_elements_worker/test_classifications.py +107 -60
- tests/test_elements_worker/test_elements.py +185 -49
- tests/test_elements_worker/test_entities.py +102 -33
- tests/test_elements_worker/test_metadata.py +223 -98
- tests/test_elements_worker/test_transcriptions.py +293 -143
- tests/test_utils.py +28 -0
- {arkindex_base_worker-0.4.0b1.dist-info → arkindex_base_worker-0.4.0b2.dist-info}/LICENSE +0 -0
- {arkindex_base_worker-0.4.0b1.dist-info → arkindex_base_worker-0.4.0b2.dist-info}/WHEEL +0 -0
- {arkindex_base_worker-0.4.0b1.dist-info → arkindex_base_worker-0.4.0b2.dist-info}/top_level.txt +0 -0
|
@@ -13,6 +13,7 @@ from arkindex_worker.cache import (
|
|
|
13
13
|
CachedTranscriptionEntity,
|
|
14
14
|
)
|
|
15
15
|
from arkindex_worker.models import Transcription
|
|
16
|
+
from arkindex_worker.utils import DEFAULT_BATCH_SIZE
|
|
16
17
|
from arkindex_worker.worker.entity import MissingEntityType
|
|
17
18
|
from arkindex_worker.worker.transcription import TextOrientation
|
|
18
19
|
from tests import CORPUS_ID
|
|
@@ -988,38 +989,89 @@ def test_create_transcription_entities_wrong_entity(
|
|
|
988
989
|
)
|
|
989
990
|
|
|
990
991
|
|
|
991
|
-
|
|
992
|
+
@pytest.mark.parametrize("batch_size", [DEFAULT_BATCH_SIZE, 1])
|
|
993
|
+
def test_create_transcription_entities(batch_size, responses, mock_elements_worker):
|
|
992
994
|
transcription = Transcription(id="transcription-id")
|
|
995
|
+
|
|
993
996
|
# Call to Transcription entities creation in bulk
|
|
994
|
-
|
|
995
|
-
responses.
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
997
|
+
if batch_size > 1:
|
|
998
|
+
responses.add(
|
|
999
|
+
responses.POST,
|
|
1000
|
+
"http://testserver/api/v1/transcription/transcription-id/entities/bulk/",
|
|
1001
|
+
status=201,
|
|
1002
|
+
match=[
|
|
1003
|
+
matchers.json_params_matcher(
|
|
1004
|
+
{
|
|
1005
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
1006
|
+
"entities": [
|
|
1007
|
+
{
|
|
1008
|
+
"name": "Teklia",
|
|
1009
|
+
"type_id": "22222222-2222-2222-2222-222222222222",
|
|
1010
|
+
"offset": 0,
|
|
1011
|
+
"length": 6,
|
|
1012
|
+
"confidence": 1.0,
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
"name": "Team Rocket",
|
|
1016
|
+
"type_id": "22222222-2222-2222-2222-222222222222",
|
|
1017
|
+
"offset": 7,
|
|
1018
|
+
"length": 11,
|
|
1019
|
+
"confidence": 1.0,
|
|
1020
|
+
},
|
|
1021
|
+
],
|
|
1022
|
+
}
|
|
1023
|
+
)
|
|
1024
|
+
],
|
|
1025
|
+
json={
|
|
1026
|
+
"entities": [
|
|
1027
|
+
{
|
|
1028
|
+
"transcription_entity_id": "transc-entity-id",
|
|
1029
|
+
"entity_id": "entity-id1",
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
"transcription_entity_id": "transc-entity-id",
|
|
1033
|
+
"entity_id": "entity-id2",
|
|
1034
|
+
},
|
|
1035
|
+
]
|
|
1036
|
+
},
|
|
1037
|
+
)
|
|
1038
|
+
else:
|
|
1039
|
+
for idx, (name, offset, length) in enumerate(
|
|
1040
|
+
[
|
|
1041
|
+
("Teklia", 0, 6),
|
|
1042
|
+
("Team Rocket", 7, 11),
|
|
1043
|
+
],
|
|
1044
|
+
start=1,
|
|
1045
|
+
):
|
|
1046
|
+
responses.add(
|
|
1047
|
+
responses.POST,
|
|
1048
|
+
"http://testserver/api/v1/transcription/transcription-id/entities/bulk/",
|
|
1049
|
+
status=201,
|
|
1050
|
+
match=[
|
|
1051
|
+
matchers.json_params_matcher(
|
|
1052
|
+
{
|
|
1053
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
1054
|
+
"entities": [
|
|
1055
|
+
{
|
|
1056
|
+
"name": name,
|
|
1057
|
+
"type_id": "22222222-2222-2222-2222-222222222222",
|
|
1058
|
+
"offset": offset,
|
|
1059
|
+
"length": length,
|
|
1060
|
+
"confidence": 1.0,
|
|
1061
|
+
}
|
|
1062
|
+
],
|
|
1063
|
+
}
|
|
1064
|
+
)
|
|
1065
|
+
],
|
|
1066
|
+
json={
|
|
1002
1067
|
"entities": [
|
|
1003
1068
|
{
|
|
1004
|
-
"
|
|
1005
|
-
"
|
|
1006
|
-
"offset": 0,
|
|
1007
|
-
"length": 6,
|
|
1008
|
-
"confidence": 1.0,
|
|
1069
|
+
"transcription_entity_id": "transc-entity-id",
|
|
1070
|
+
"entity_id": f"entity-id{idx}",
|
|
1009
1071
|
}
|
|
1010
|
-
]
|
|
1011
|
-
}
|
|
1072
|
+
]
|
|
1073
|
+
},
|
|
1012
1074
|
)
|
|
1013
|
-
],
|
|
1014
|
-
json={
|
|
1015
|
-
"entities": [
|
|
1016
|
-
{
|
|
1017
|
-
"transcription_entity_id": "transc-entity-id",
|
|
1018
|
-
"entity_id": "entity-id",
|
|
1019
|
-
}
|
|
1020
|
-
]
|
|
1021
|
-
},
|
|
1022
|
-
)
|
|
1023
1075
|
|
|
1024
1076
|
# Store entity type/slug correspondence on the worker
|
|
1025
1077
|
mock_elements_worker.entity_types = {
|
|
@@ -1034,18 +1086,35 @@ def test_create_transcription_entities(responses, mock_elements_worker):
|
|
|
1034
1086
|
"offset": 0,
|
|
1035
1087
|
"length": 6,
|
|
1036
1088
|
"confidence": 1.0,
|
|
1037
|
-
}
|
|
1089
|
+
},
|
|
1090
|
+
{
|
|
1091
|
+
"name": "Team Rocket",
|
|
1092
|
+
"type_id": "22222222-2222-2222-2222-222222222222",
|
|
1093
|
+
"offset": 7,
|
|
1094
|
+
"length": 11,
|
|
1095
|
+
"confidence": 1.0,
|
|
1096
|
+
},
|
|
1038
1097
|
],
|
|
1098
|
+
batch_size=batch_size,
|
|
1039
1099
|
)
|
|
1040
1100
|
|
|
1041
|
-
assert len(created_objects) ==
|
|
1101
|
+
assert len(created_objects) == 2
|
|
1042
1102
|
|
|
1043
|
-
|
|
1044
|
-
assert [
|
|
1045
|
-
(call.request.method, call.request.url) for call in responses.calls
|
|
1046
|
-
] == BASE_API_CALLS + [
|
|
1103
|
+
bulk_api_calls = [
|
|
1047
1104
|
(
|
|
1048
1105
|
"POST",
|
|
1049
1106
|
"http://testserver/api/v1/transcription/transcription-id/entities/bulk/",
|
|
1050
|
-
)
|
|
1107
|
+
)
|
|
1051
1108
|
]
|
|
1109
|
+
if batch_size != DEFAULT_BATCH_SIZE:
|
|
1110
|
+
bulk_api_calls.append(
|
|
1111
|
+
(
|
|
1112
|
+
"POST",
|
|
1113
|
+
"http://testserver/api/v1/transcription/transcription-id/entities/bulk/",
|
|
1114
|
+
)
|
|
1115
|
+
)
|
|
1116
|
+
|
|
1117
|
+
assert len(responses.calls) == len(BASE_API_CALLS) + len(bulk_api_calls)
|
|
1118
|
+
assert [
|
|
1119
|
+
(call.request.method, call.request.url) for call in responses.calls
|
|
1120
|
+
] == BASE_API_CALLS + bulk_api_calls
|
|
@@ -7,6 +7,7 @@ from apistar.exceptions import ErrorResponse
|
|
|
7
7
|
from arkindex.mock import MockApiClient
|
|
8
8
|
from arkindex_worker.cache import CachedElement
|
|
9
9
|
from arkindex_worker.models import Element
|
|
10
|
+
from arkindex_worker.utils import DEFAULT_BATCH_SIZE
|
|
10
11
|
from arkindex_worker.worker import MetaType
|
|
11
12
|
|
|
12
13
|
from . import BASE_API_CALLS
|
|
@@ -228,143 +229,267 @@ def test_create_metadata_cached_element(responses, mock_elements_worker_with_cac
|
|
|
228
229
|
assert metadata_id == "12345678-1234-1234-1234-123456789123"
|
|
229
230
|
|
|
230
231
|
|
|
231
|
-
@pytest.mark.parametrize(
|
|
232
|
-
|
|
233
|
-
[
|
|
234
|
-
[{"type": MetaType.Text, "name": "fake_name", "value": "fake_value"}],
|
|
235
|
-
[
|
|
236
|
-
{
|
|
237
|
-
"type": MetaType.Text,
|
|
238
|
-
"name": "fake_name",
|
|
239
|
-
"value": "fake_value",
|
|
240
|
-
"entity_id": "fake_entity_id",
|
|
241
|
-
}
|
|
242
|
-
],
|
|
243
|
-
],
|
|
244
|
-
)
|
|
245
|
-
def test_create_metadata_bulk(responses, mock_elements_worker, metadata_list):
|
|
232
|
+
@pytest.mark.parametrize("batch_size", [DEFAULT_BATCH_SIZE, 1])
|
|
233
|
+
def test_create_metadata_bulk(batch_size, responses, mock_elements_worker):
|
|
246
234
|
element = Element({"id": "12341234-1234-1234-1234-123412341234"})
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
"
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
|
|
255
|
-
"id": "fake_metadata_id",
|
|
256
|
-
"type": metadata_list[0]["type"].value,
|
|
257
|
-
"name": metadata_list[0]["name"],
|
|
258
|
-
"value": metadata_list[0]["value"],
|
|
259
|
-
"dates": [],
|
|
260
|
-
"entity_id": metadata_list[0].get("entity_id"),
|
|
261
|
-
}
|
|
262
|
-
],
|
|
235
|
+
|
|
236
|
+
metadata_list = [
|
|
237
|
+
{"type": MetaType.Text, "name": "fake_name", "value": "fake_value"},
|
|
238
|
+
{
|
|
239
|
+
"type": MetaType.Text,
|
|
240
|
+
"name": "Year",
|
|
241
|
+
"value": "2024",
|
|
242
|
+
"entity_id": "entity_id",
|
|
263
243
|
},
|
|
264
|
-
|
|
244
|
+
]
|
|
245
|
+
if batch_size > 1:
|
|
246
|
+
responses.add(
|
|
247
|
+
responses.POST,
|
|
248
|
+
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
249
|
+
status=201,
|
|
250
|
+
json={
|
|
251
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
252
|
+
"metadata_list": [
|
|
253
|
+
{
|
|
254
|
+
"id": "fake_metadata_id1",
|
|
255
|
+
"type": metadata_list[0]["type"].value,
|
|
256
|
+
"name": metadata_list[0]["name"],
|
|
257
|
+
"value": metadata_list[0]["value"],
|
|
258
|
+
"dates": [],
|
|
259
|
+
"entity_id": None,
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"id": "fake_metadata_id2",
|
|
263
|
+
"type": metadata_list[1]["type"].value,
|
|
264
|
+
"name": metadata_list[1]["name"],
|
|
265
|
+
"value": metadata_list[1]["value"],
|
|
266
|
+
"dates": [],
|
|
267
|
+
"entity_id": metadata_list[1]["entity_id"],
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
},
|
|
271
|
+
)
|
|
272
|
+
else:
|
|
273
|
+
for idx, meta in enumerate(metadata_list, start=1):
|
|
274
|
+
responses.add(
|
|
275
|
+
responses.POST,
|
|
276
|
+
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
277
|
+
status=201,
|
|
278
|
+
json={
|
|
279
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
280
|
+
"metadata_list": [
|
|
281
|
+
{
|
|
282
|
+
"id": f"fake_metadata_id{idx}",
|
|
283
|
+
"type": meta["type"].value,
|
|
284
|
+
"name": meta["name"],
|
|
285
|
+
"value": meta["value"],
|
|
286
|
+
"dates": [],
|
|
287
|
+
"entity_id": meta.get("entity_id"),
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
)
|
|
265
292
|
|
|
266
293
|
created_metadata_list = mock_elements_worker.create_metadata_bulk(
|
|
267
|
-
element, metadata_list
|
|
294
|
+
element, metadata_list, batch_size=batch_size
|
|
268
295
|
)
|
|
269
296
|
|
|
270
|
-
|
|
271
|
-
assert [
|
|
272
|
-
(call.request.method, call.request.url) for call in responses.calls
|
|
273
|
-
] == BASE_API_CALLS + [
|
|
297
|
+
bulk_api_calls = [
|
|
274
298
|
(
|
|
275
299
|
"POST",
|
|
276
300
|
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
277
|
-
)
|
|
278
|
-
]
|
|
279
|
-
assert json.loads(responses.calls[-1].request.body)["metadata_list"] == [
|
|
280
|
-
{
|
|
281
|
-
"type": metadata_list[0]["type"].value,
|
|
282
|
-
"name": metadata_list[0]["name"],
|
|
283
|
-
"value": metadata_list[0]["value"],
|
|
284
|
-
"entity_id": metadata_list[0].get("entity_id"),
|
|
285
|
-
}
|
|
301
|
+
)
|
|
286
302
|
]
|
|
303
|
+
if batch_size != DEFAULT_BATCH_SIZE:
|
|
304
|
+
bulk_api_calls.append(
|
|
305
|
+
(
|
|
306
|
+
"POST",
|
|
307
|
+
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
308
|
+
)
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
assert len(responses.calls) == len(BASE_API_CALLS) + len(bulk_api_calls)
|
|
312
|
+
assert [
|
|
313
|
+
(call.request.method, call.request.url) for call in responses.calls
|
|
314
|
+
] == BASE_API_CALLS + bulk_api_calls
|
|
315
|
+
|
|
316
|
+
first_meta = {
|
|
317
|
+
**metadata_list[0],
|
|
318
|
+
"type": metadata_list[0]["type"].value,
|
|
319
|
+
"entity_id": None,
|
|
320
|
+
}
|
|
321
|
+
second_meta = {**metadata_list[1], "type": metadata_list[1]["type"].value}
|
|
322
|
+
empty_payload = {
|
|
323
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
324
|
+
"metadata_list": [],
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
bodies = []
|
|
328
|
+
first_call_idx = None
|
|
329
|
+
if batch_size > 1:
|
|
330
|
+
first_call_idx = -1
|
|
331
|
+
bodies.append({**empty_payload, "metadata_list": [first_meta, second_meta]})
|
|
332
|
+
else:
|
|
333
|
+
first_call_idx = -2
|
|
334
|
+
bodies.append({**empty_payload, "metadata_list": [first_meta]})
|
|
335
|
+
bodies.append({**empty_payload, "metadata_list": [second_meta]})
|
|
336
|
+
|
|
337
|
+
assert [
|
|
338
|
+
json.loads(bulk_call.request.body)
|
|
339
|
+
for bulk_call in responses.calls[first_call_idx:]
|
|
340
|
+
] == bodies
|
|
341
|
+
|
|
287
342
|
assert created_metadata_list == [
|
|
288
343
|
{
|
|
289
|
-
"id": "
|
|
344
|
+
"id": "fake_metadata_id1",
|
|
290
345
|
"type": metadata_list[0]["type"].value,
|
|
291
346
|
"name": metadata_list[0]["name"],
|
|
292
347
|
"value": metadata_list[0]["value"],
|
|
293
348
|
"dates": [],
|
|
294
|
-
"entity_id":
|
|
295
|
-
}
|
|
349
|
+
"entity_id": None,
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"id": "fake_metadata_id2",
|
|
353
|
+
"type": metadata_list[1]["type"].value,
|
|
354
|
+
"name": metadata_list[1]["name"],
|
|
355
|
+
"value": metadata_list[1]["value"],
|
|
356
|
+
"dates": [],
|
|
357
|
+
"entity_id": metadata_list[1]["entity_id"],
|
|
358
|
+
},
|
|
296
359
|
]
|
|
297
360
|
|
|
298
361
|
|
|
299
|
-
@pytest.mark.parametrize(
|
|
300
|
-
"metadata_list",
|
|
301
|
-
[
|
|
302
|
-
[{"type": MetaType.Text, "name": "fake_name", "value": "fake_value"}],
|
|
303
|
-
[
|
|
304
|
-
{
|
|
305
|
-
"type": MetaType.Text,
|
|
306
|
-
"name": "fake_name",
|
|
307
|
-
"value": "fake_value",
|
|
308
|
-
"entity_id": "fake_entity_id",
|
|
309
|
-
}
|
|
310
|
-
],
|
|
311
|
-
],
|
|
312
|
-
)
|
|
362
|
+
@pytest.mark.parametrize("batch_size", [DEFAULT_BATCH_SIZE, 1])
|
|
313
363
|
def test_create_metadata_bulk_cached_element(
|
|
314
|
-
responses, mock_elements_worker_with_cache
|
|
364
|
+
batch_size, responses, mock_elements_worker_with_cache
|
|
315
365
|
):
|
|
316
366
|
element = CachedElement.create(
|
|
317
367
|
id="12341234-1234-1234-1234-123412341234", type="thing"
|
|
318
368
|
)
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
"
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
"
|
|
325
|
-
"
|
|
326
|
-
|
|
327
|
-
"id": "fake_metadata_id",
|
|
328
|
-
"type": metadata_list[0]["type"].value,
|
|
329
|
-
"name": metadata_list[0]["name"],
|
|
330
|
-
"value": metadata_list[0]["value"],
|
|
331
|
-
"dates": [],
|
|
332
|
-
"entity_id": metadata_list[0].get("entity_id"),
|
|
333
|
-
}
|
|
334
|
-
],
|
|
369
|
+
|
|
370
|
+
metadata_list = [
|
|
371
|
+
{"type": MetaType.Text, "name": "fake_name", "value": "fake_value"},
|
|
372
|
+
{
|
|
373
|
+
"type": MetaType.Text,
|
|
374
|
+
"name": "Year",
|
|
375
|
+
"value": "2024",
|
|
376
|
+
"entity_id": "entity_id",
|
|
335
377
|
},
|
|
336
|
-
|
|
378
|
+
]
|
|
379
|
+
if batch_size > 1:
|
|
380
|
+
responses.add(
|
|
381
|
+
responses.POST,
|
|
382
|
+
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
383
|
+
status=201,
|
|
384
|
+
json={
|
|
385
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
386
|
+
"metadata_list": [
|
|
387
|
+
{
|
|
388
|
+
"id": "fake_metadata_id1",
|
|
389
|
+
"type": metadata_list[0]["type"].value,
|
|
390
|
+
"name": metadata_list[0]["name"],
|
|
391
|
+
"value": metadata_list[0]["value"],
|
|
392
|
+
"dates": [],
|
|
393
|
+
"entity_id": None,
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"id": "fake_metadata_id2",
|
|
397
|
+
"type": metadata_list[1]["type"].value,
|
|
398
|
+
"name": metadata_list[1]["name"],
|
|
399
|
+
"value": metadata_list[1]["value"],
|
|
400
|
+
"dates": [],
|
|
401
|
+
"entity_id": metadata_list[1]["entity_id"],
|
|
402
|
+
},
|
|
403
|
+
],
|
|
404
|
+
},
|
|
405
|
+
)
|
|
406
|
+
else:
|
|
407
|
+
for idx, meta in enumerate(metadata_list, start=1):
|
|
408
|
+
responses.add(
|
|
409
|
+
responses.POST,
|
|
410
|
+
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
411
|
+
status=201,
|
|
412
|
+
json={
|
|
413
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
414
|
+
"metadata_list": [
|
|
415
|
+
{
|
|
416
|
+
"id": f"fake_metadata_id{idx}",
|
|
417
|
+
"type": meta["type"].value,
|
|
418
|
+
"name": meta["name"],
|
|
419
|
+
"value": meta["value"],
|
|
420
|
+
"dates": [],
|
|
421
|
+
"entity_id": meta.get("entity_id"),
|
|
422
|
+
}
|
|
423
|
+
],
|
|
424
|
+
},
|
|
425
|
+
)
|
|
337
426
|
|
|
338
427
|
created_metadata_list = mock_elements_worker_with_cache.create_metadata_bulk(
|
|
339
|
-
element, metadata_list
|
|
428
|
+
element, metadata_list, batch_size=batch_size
|
|
340
429
|
)
|
|
341
430
|
|
|
342
|
-
|
|
343
|
-
assert [
|
|
344
|
-
(call.request.method, call.request.url) for call in responses.calls
|
|
345
|
-
] == BASE_API_CALLS + [
|
|
431
|
+
bulk_api_calls = [
|
|
346
432
|
(
|
|
347
433
|
"POST",
|
|
348
434
|
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
349
|
-
)
|
|
350
|
-
]
|
|
351
|
-
assert json.loads(responses.calls[-1].request.body)["metadata_list"] == [
|
|
352
|
-
{
|
|
353
|
-
"type": metadata_list[0]["type"].value,
|
|
354
|
-
"name": metadata_list[0]["name"],
|
|
355
|
-
"value": metadata_list[0]["value"],
|
|
356
|
-
"entity_id": metadata_list[0].get("entity_id"),
|
|
357
|
-
}
|
|
435
|
+
)
|
|
358
436
|
]
|
|
437
|
+
if batch_size != DEFAULT_BATCH_SIZE:
|
|
438
|
+
bulk_api_calls.append(
|
|
439
|
+
(
|
|
440
|
+
"POST",
|
|
441
|
+
"http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
|
|
442
|
+
)
|
|
443
|
+
)
|
|
444
|
+
|
|
445
|
+
assert len(responses.calls) == len(BASE_API_CALLS) + len(bulk_api_calls)
|
|
446
|
+
assert [
|
|
447
|
+
(call.request.method, call.request.url) for call in responses.calls
|
|
448
|
+
] == BASE_API_CALLS + bulk_api_calls
|
|
449
|
+
|
|
450
|
+
first_meta = {
|
|
451
|
+
**metadata_list[0],
|
|
452
|
+
"type": metadata_list[0]["type"].value,
|
|
453
|
+
"entity_id": None,
|
|
454
|
+
}
|
|
455
|
+
second_meta = {**metadata_list[1], "type": metadata_list[1]["type"].value}
|
|
456
|
+
empty_payload = {
|
|
457
|
+
"worker_run_id": "56785678-5678-5678-5678-567856785678",
|
|
458
|
+
"metadata_list": [],
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
bodies = []
|
|
462
|
+
first_call_idx = None
|
|
463
|
+
if batch_size > 1:
|
|
464
|
+
first_call_idx = -1
|
|
465
|
+
bodies.append({**empty_payload, "metadata_list": [first_meta, second_meta]})
|
|
466
|
+
else:
|
|
467
|
+
first_call_idx = -2
|
|
468
|
+
bodies.append({**empty_payload, "metadata_list": [first_meta]})
|
|
469
|
+
bodies.append({**empty_payload, "metadata_list": [second_meta]})
|
|
470
|
+
|
|
471
|
+
assert [
|
|
472
|
+
json.loads(bulk_call.request.body)
|
|
473
|
+
for bulk_call in responses.calls[first_call_idx:]
|
|
474
|
+
] == bodies
|
|
475
|
+
|
|
359
476
|
assert created_metadata_list == [
|
|
360
477
|
{
|
|
361
|
-
"id": "
|
|
478
|
+
"id": "fake_metadata_id1",
|
|
362
479
|
"type": metadata_list[0]["type"].value,
|
|
363
480
|
"name": metadata_list[0]["name"],
|
|
364
481
|
"value": metadata_list[0]["value"],
|
|
365
482
|
"dates": [],
|
|
366
|
-
"entity_id":
|
|
367
|
-
}
|
|
483
|
+
"entity_id": None,
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"id": "fake_metadata_id2",
|
|
487
|
+
"type": metadata_list[1]["type"].value,
|
|
488
|
+
"name": metadata_list[1]["name"],
|
|
489
|
+
"value": metadata_list[1]["value"],
|
|
490
|
+
"dates": [],
|
|
491
|
+
"entity_id": metadata_list[1]["entity_id"],
|
|
492
|
+
},
|
|
368
493
|
]
|
|
369
494
|
|
|
370
495
|
|