arkindex-base-worker 0.3.7rc10__py3-none-any.whl → 0.4.0a1__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.
Files changed (30) hide show
  1. {arkindex_base_worker-0.3.7rc10.dist-info → arkindex_base_worker-0.4.0a1.dist-info}/METADATA +10 -16
  2. arkindex_base_worker-0.4.0a1.dist-info/RECORD +51 -0
  3. arkindex_worker/models.py +6 -0
  4. arkindex_worker/utils.py +3 -4
  5. arkindex_worker/worker/__init__.py +23 -2
  6. arkindex_worker/worker/base.py +3 -23
  7. arkindex_worker/worker/corpus.py +69 -0
  8. arkindex_worker/worker/image.py +21 -0
  9. arkindex_worker/worker/training.py +12 -0
  10. tests/__init__.py +8 -0
  11. tests/conftest.py +4 -8
  12. tests/test_base_worker.py +8 -9
  13. tests/test_dataset_worker.py +14 -41
  14. tests/test_elements_worker/test_classifications.py +22 -39
  15. tests/test_elements_worker/test_cli.py +3 -11
  16. tests/test_elements_worker/test_corpus.py +137 -0
  17. tests/test_elements_worker/test_dataset.py +6 -11
  18. tests/test_elements_worker/test_elements.py +106 -85
  19. tests/test_elements_worker/test_entities.py +15 -39
  20. tests/test_elements_worker/test_image.py +65 -0
  21. tests/test_elements_worker/test_metadata.py +6 -40
  22. tests/test_elements_worker/test_task.py +7 -17
  23. tests/test_elements_worker/test_training.py +35 -0
  24. tests/test_elements_worker/test_transcriptions.py +10 -27
  25. tests/test_elements_worker/test_worker.py +2 -1
  26. tests/test_image.py +3 -5
  27. arkindex_base_worker-0.3.7rc10.dist-info/RECORD +0 -47
  28. {arkindex_base_worker-0.3.7rc10.dist-info → arkindex_base_worker-0.4.0a1.dist-info}/LICENSE +0 -0
  29. {arkindex_base_worker-0.3.7rc10.dist-info → arkindex_base_worker-0.4.0a1.dist-info}/WHEEL +0 -0
  30. {arkindex_base_worker-0.3.7rc10.dist-info → arkindex_base_worker-0.4.0a1.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,7 @@ from arkindex_worker.cache import (
17
17
  from arkindex_worker.models import Element
18
18
  from arkindex_worker.worker import ElementsWorker
19
19
  from arkindex_worker.worker.element import MissingTypeError
20
+ from tests import CORPUS_ID
20
21
 
21
22
  from . import BASE_API_CALLS
22
23
 
@@ -32,12 +33,11 @@ def test_check_required_types_argument_types(mock_elements_worker):
32
33
 
33
34
 
34
35
  def test_check_required_types(responses, mock_elements_worker):
35
- corpus_id = "11111111-1111-1111-1111-111111111111"
36
36
  responses.add(
37
37
  responses.GET,
38
- f"http://testserver/api/v1/corpus/{corpus_id}/",
38
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/",
39
39
  json={
40
- "id": corpus_id,
40
+ "id": CORPUS_ID,
41
41
  "name": "Some Corpus",
42
42
  "types": [{"slug": "folder"}, {"slug": "page"}],
43
43
  },
@@ -57,13 +57,11 @@ def test_check_required_types(responses, mock_elements_worker):
57
57
 
58
58
 
59
59
  def test_create_missing_types(responses, mock_elements_worker):
60
- corpus_id = "11111111-1111-1111-1111-111111111111"
61
-
62
60
  responses.add(
63
61
  responses.GET,
64
- f"http://testserver/api/v1/corpus/{corpus_id}/",
62
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/",
65
63
  json={
66
- "id": corpus_id,
64
+ "id": CORPUS_ID,
67
65
  "name": "Some Corpus",
68
66
  "types": [{"slug": "folder"}, {"slug": "page"}],
69
67
  },
@@ -77,7 +75,7 @@ def test_create_missing_types(responses, mock_elements_worker):
77
75
  "slug": "text_line",
78
76
  "display_name": "text_line",
79
77
  "folder": False,
80
- "corpus": corpus_id,
78
+ "corpus": CORPUS_ID,
81
79
  }
82
80
  )
83
81
  ],
@@ -91,7 +89,7 @@ def test_create_missing_types(responses, mock_elements_worker):
91
89
  "slug": "act",
92
90
  "display_name": "act",
93
91
  "folder": False,
94
- "corpus": corpus_id,
92
+ "corpus": CORPUS_ID,
95
93
  }
96
94
  )
97
95
  ],
@@ -135,8 +133,7 @@ def test_list_elements_elements_list_arg_missing_id(
135
133
  monkeypatch, tmp_path, mock_elements_worker
136
134
  ):
137
135
  elements_path = tmp_path / "elements.json"
138
- with elements_path.open("w") as f:
139
- json.dump([{"type": "volume"}], f)
136
+ elements_path.write_text(json.dumps([{"type": "volume"}]))
140
137
 
141
138
  monkeypatch.setenv("TASK_ELEMENTS", str(elements_path))
142
139
  worker = ElementsWorker()
@@ -147,18 +144,43 @@ def test_list_elements_elements_list_arg_missing_id(
147
144
  assert elt_list == []
148
145
 
149
146
 
150
- def test_list_elements_elements_list_arg(monkeypatch, tmp_path, mock_elements_worker):
147
+ def test_list_elements_elements_list_arg_not_uuid(
148
+ monkeypatch, tmp_path, mock_elements_worker
149
+ ):
151
150
  elements_path = tmp_path / "elements.json"
152
- with elements_path.open("w") as f:
153
- json.dump(
151
+ elements_path.write_text(
152
+ json.dumps(
154
153
  [
155
154
  {"id": "volumeid", "type": "volume"},
156
155
  {"id": "pageid", "type": "page"},
157
156
  {"id": "actid", "type": "act"},
158
157
  {"id": "surfaceid", "type": "surface"},
159
- ],
160
- f,
158
+ ]
159
+ )
160
+ )
161
+
162
+ monkeypatch.setenv("TASK_ELEMENTS", str(elements_path))
163
+ worker = ElementsWorker()
164
+ worker.configure()
165
+
166
+ with pytest.raises(
167
+ Exception,
168
+ match="These element IDs are invalid: volumeid, pageid, actid, surfaceid",
169
+ ):
170
+ worker.list_elements()
171
+
172
+
173
+ def test_list_elements_elements_list_arg(monkeypatch, tmp_path, mock_elements_worker):
174
+ elements_path = tmp_path / "elements.json"
175
+ elements_path.write_text(
176
+ json.dumps(
177
+ [
178
+ {"id": "11111111-1111-1111-1111-111111111111", "type": "volume"},
179
+ {"id": "22222222-2222-2222-2222-222222222222", "type": "page"},
180
+ {"id": "33333333-3333-3333-3333-333333333333", "type": "act"},
181
+ ]
161
182
  )
183
+ )
162
184
 
163
185
  monkeypatch.setenv("TASK_ELEMENTS", str(elements_path))
164
186
  worker = ElementsWorker()
@@ -166,10 +188,14 @@ def test_list_elements_elements_list_arg(monkeypatch, tmp_path, mock_elements_wo
166
188
 
167
189
  elt_list = worker.list_elements()
168
190
 
169
- assert elt_list == ["volumeid", "pageid", "actid", "surfaceid"]
191
+ assert elt_list == [
192
+ "11111111-1111-1111-1111-111111111111",
193
+ "22222222-2222-2222-2222-222222222222",
194
+ "33333333-3333-3333-3333-333333333333",
195
+ ]
170
196
 
171
197
 
172
- def test_list_elements_element_arg(mocker, mock_elements_worker):
198
+ def test_list_elements_element_arg_not_uuid(mocker, mock_elements_worker):
173
199
  mocker.patch(
174
200
  "arkindex_worker.worker.base.argparse.ArgumentParser.parse_args",
175
201
  return_value=Namespace(
@@ -184,23 +210,50 @@ def test_list_elements_element_arg(mocker, mock_elements_worker):
184
210
  worker = ElementsWorker()
185
211
  worker.configure()
186
212
 
213
+ with pytest.raises(
214
+ Exception, match="These element IDs are invalid: volumeid, pageid"
215
+ ):
216
+ worker.list_elements()
217
+
218
+
219
+ def test_list_elements_element_arg(mocker, mock_elements_worker):
220
+ mocker.patch(
221
+ "arkindex_worker.worker.base.argparse.ArgumentParser.parse_args",
222
+ return_value=Namespace(
223
+ element=[
224
+ "11111111-1111-1111-1111-111111111111",
225
+ "22222222-2222-2222-2222-222222222222",
226
+ ],
227
+ verbose=False,
228
+ elements_list=None,
229
+ database=None,
230
+ dev=False,
231
+ ),
232
+ )
233
+
234
+ worker = ElementsWorker()
235
+ worker.configure()
236
+
187
237
  elt_list = worker.list_elements()
188
238
 
189
- assert elt_list == ["volumeid", "pageid"]
239
+ assert elt_list == [
240
+ "11111111-1111-1111-1111-111111111111",
241
+ "22222222-2222-2222-2222-222222222222",
242
+ ]
190
243
 
191
244
 
192
245
  def test_list_elements_both_args_error(mocker, mock_elements_worker, tmp_path):
193
246
  elements_path = tmp_path / "elements.json"
194
- with elements_path.open("w") as f:
195
- json.dump(
247
+ elements_path.write_text(
248
+ json.dumps(
196
249
  [
197
250
  {"id": "volumeid", "type": "volume"},
198
251
  {"id": "pageid", "type": "page"},
199
252
  {"id": "actid", "type": "act"},
200
253
  {"id": "surfaceid", "type": "surface"},
201
- ],
202
- f,
254
+ ]
203
255
  )
256
+ )
204
257
  mocker.patch(
205
258
  "arkindex_worker.worker.base.argparse.ArgumentParser.parse_args",
206
259
  return_value=Namespace(
@@ -272,8 +325,8 @@ def test_database_arg_cache_missing_version_table(
272
325
  def test_load_corpus_classes_api_error(responses, mock_elements_worker):
273
326
  responses.add(
274
327
  responses.GET,
275
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
276
- status=500,
328
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
329
+ status=418,
277
330
  )
278
331
 
279
332
  assert not mock_elements_worker.classes
@@ -289,23 +342,23 @@ def test_load_corpus_classes_api_error(responses, mock_elements_worker):
289
342
  # We do 5 retries
290
343
  (
291
344
  "GET",
292
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
345
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
293
346
  ),
294
347
  (
295
348
  "GET",
296
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
349
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
297
350
  ),
298
351
  (
299
352
  "GET",
300
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
353
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
301
354
  ),
302
355
  (
303
356
  "GET",
304
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
357
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
305
358
  ),
306
359
  (
307
360
  "GET",
308
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
361
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
309
362
  ),
310
363
  ]
311
364
  assert not mock_elements_worker.classes
@@ -314,7 +367,7 @@ def test_load_corpus_classes_api_error(responses, mock_elements_worker):
314
367
  def test_load_corpus_classes(responses, mock_elements_worker):
315
368
  responses.add(
316
369
  responses.GET,
317
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
370
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
318
371
  status=200,
319
372
  json={
320
373
  "count": 3,
@@ -345,7 +398,7 @@ def test_load_corpus_classes(responses, mock_elements_worker):
345
398
  ] == BASE_API_CALLS + [
346
399
  (
347
400
  "GET",
348
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/classes/",
401
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/classes/",
349
402
  ),
350
403
  ]
351
404
  assert mock_elements_worker.classes == {
@@ -532,14 +585,14 @@ def test_create_sub_element_api_error(responses, mock_elements_worker):
532
585
  elt = Element(
533
586
  {
534
587
  "id": "12341234-1234-1234-1234-123412341234",
535
- "corpus": {"id": "11111111-1111-1111-1111-111111111111"},
588
+ "corpus": {"id": CORPUS_ID},
536
589
  "zone": {"image": {"id": "22222222-2222-2222-2222-222222222222"}},
537
590
  }
538
591
  )
539
592
  responses.add(
540
593
  responses.POST,
541
594
  "http://testserver/api/v1/elements/create/",
542
- status=500,
595
+ status=418,
543
596
  )
544
597
 
545
598
  with pytest.raises(ErrorResponse):
@@ -550,17 +603,10 @@ def test_create_sub_element_api_error(responses, mock_elements_worker):
550
603
  polygon=[[1, 1], [2, 2], [2, 1], [1, 2]],
551
604
  )
552
605
 
553
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
606
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
554
607
  assert [
555
608
  (call.request.method, call.request.url) for call in responses.calls
556
- ] == BASE_API_CALLS + [
557
- # We retry 5 times the API call
558
- ("POST", "http://testserver/api/v1/elements/create/"),
559
- ("POST", "http://testserver/api/v1/elements/create/"),
560
- ("POST", "http://testserver/api/v1/elements/create/"),
561
- ("POST", "http://testserver/api/v1/elements/create/"),
562
- ("POST", "http://testserver/api/v1/elements/create/"),
563
- ]
609
+ ] == BASE_API_CALLS + [("POST", "http://testserver/api/v1/elements/create/")]
564
610
 
565
611
 
566
612
  @pytest.mark.parametrize("slim_output", [True, False])
@@ -568,13 +614,13 @@ def test_create_sub_element(responses, mock_elements_worker, slim_output):
568
614
  elt = Element(
569
615
  {
570
616
  "id": "12341234-1234-1234-1234-123412341234",
571
- "corpus": {"id": "11111111-1111-1111-1111-111111111111"},
617
+ "corpus": {"id": CORPUS_ID},
572
618
  "zone": {"image": {"id": "22222222-2222-2222-2222-222222222222"}},
573
619
  }
574
620
  )
575
621
  child_elt = {
576
622
  "id": "12345678-1234-1234-1234-123456789123",
577
- "corpus": {"id": "11111111-1111-1111-1111-111111111111"},
623
+ "corpus": {"id": CORPUS_ID},
578
624
  "zone": {"image": {"id": "22222222-2222-2222-2222-222222222222"}},
579
625
  }
580
626
  responses.add(
@@ -605,7 +651,7 @@ def test_create_sub_element(responses, mock_elements_worker, slim_output):
605
651
  "type": "something",
606
652
  "name": "0",
607
653
  "image": None,
608
- "corpus": "11111111-1111-1111-1111-111111111111",
654
+ "corpus": CORPUS_ID,
609
655
  "polygon": [[1, 1], [2, 2], [2, 1], [1, 2]],
610
656
  "parent": "12341234-1234-1234-1234-123412341234",
611
657
  "worker_run_id": "56785678-5678-5678-5678-567856785678",
@@ -621,7 +667,7 @@ def test_create_sub_element_confidence(responses, mock_elements_worker):
621
667
  elt = Element(
622
668
  {
623
669
  "id": "12341234-1234-1234-1234-123412341234",
624
- "corpus": {"id": "11111111-1111-1111-1111-111111111111"},
670
+ "corpus": {"id": CORPUS_ID},
625
671
  "zone": {"image": {"id": "22222222-2222-2222-2222-222222222222"}},
626
672
  }
627
673
  )
@@ -650,7 +696,7 @@ def test_create_sub_element_confidence(responses, mock_elements_worker):
650
696
  "type": "something",
651
697
  "name": "0",
652
698
  "image": None,
653
- "corpus": "11111111-1111-1111-1111-111111111111",
699
+ "corpus": CORPUS_ID,
654
700
  "polygon": [[1, 1], [2, 2], [2, 1], [1, 2]],
655
701
  "parent": "12341234-1234-1234-1234-123412341234",
656
702
  "worker_run_id": "56785678-5678-5678-5678-567856785678",
@@ -931,7 +977,7 @@ def test_create_elements_api_error(responses, mock_elements_worker):
931
977
  responses.add(
932
978
  responses.POST,
933
979
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/children/bulk/",
934
- status=500,
980
+ status=418,
935
981
  )
936
982
 
937
983
  with pytest.raises(ErrorResponse):
@@ -946,31 +992,14 @@ def test_create_elements_api_error(responses, mock_elements_worker):
946
992
  ],
947
993
  )
948
994
 
949
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
995
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
950
996
  assert [
951
997
  (call.request.method, call.request.url) for call in responses.calls
952
998
  ] == BASE_API_CALLS + [
953
- # We retry 5 times the API call
954
999
  (
955
1000
  "POST",
956
1001
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/children/bulk/",
957
- ),
958
- (
959
- "POST",
960
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/children/bulk/",
961
- ),
962
- (
963
- "POST",
964
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/children/bulk/",
965
- ),
966
- (
967
- "POST",
968
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/children/bulk/",
969
- ),
970
- (
971
- "POST",
972
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/children/bulk/",
973
- ),
1002
+ )
974
1003
  ]
975
1004
 
976
1005
 
@@ -1275,7 +1304,7 @@ def test_create_element_parent_api_error(responses, mock_elements_worker):
1275
1304
  responses.add(
1276
1305
  responses.POST,
1277
1306
  "http://testserver/api/v1/element/497f6eca-6276-4993-bfeb-53cbbbba6f08/parent/12341234-1234-1234-1234-123412341234/",
1278
- status=500,
1307
+ status=418,
1279
1308
  )
1280
1309
 
1281
1310
  with pytest.raises(ErrorResponse):
@@ -1284,16 +1313,15 @@ def test_create_element_parent_api_error(responses, mock_elements_worker):
1284
1313
  child=child,
1285
1314
  )
1286
1315
 
1287
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
1316
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
1288
1317
  assert [
1289
1318
  (call.request.method, call.request.url) for call in responses.calls
1290
1319
  ] == BASE_API_CALLS + [
1291
- # We retry 5 times the API call
1292
1320
  (
1293
1321
  "POST",
1294
1322
  "http://testserver/api/v1/element/497f6eca-6276-4993-bfeb-53cbbbba6f08/parent/12341234-1234-1234-1234-123412341234/",
1295
- ),
1296
- ] * 5
1323
+ )
1324
+ ]
1297
1325
 
1298
1326
 
1299
1327
  def test_create_element_parent(responses, mock_elements_worker):
@@ -1527,7 +1555,7 @@ def test_partial_update_element_api_error(responses, mock_elements_worker):
1527
1555
  responses.add(
1528
1556
  responses.PATCH,
1529
1557
  f"http://testserver/api/v1/element/{elt.id}/",
1530
- status=500,
1558
+ status=418,
1531
1559
  )
1532
1560
 
1533
1561
  with pytest.raises(ErrorResponse):
@@ -1538,17 +1566,10 @@ def test_partial_update_element_api_error(responses, mock_elements_worker):
1538
1566
  polygon=[[1, 1], [2, 2], [2, 1], [1, 2]],
1539
1567
  )
1540
1568
 
1541
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
1569
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
1542
1570
  assert [
1543
1571
  (call.request.method, call.request.url) for call in responses.calls
1544
- ] == BASE_API_CALLS + [
1545
- # We retry 5 times the API call
1546
- ("PATCH", f"http://testserver/api/v1/element/{elt.id}/"),
1547
- ("PATCH", f"http://testserver/api/v1/element/{elt.id}/"),
1548
- ("PATCH", f"http://testserver/api/v1/element/{elt.id}/"),
1549
- ("PATCH", f"http://testserver/api/v1/element/{elt.id}/"),
1550
- ("PATCH", f"http://testserver/api/v1/element/{elt.id}/"),
1551
- ]
1572
+ ] == BASE_API_CALLS + [("PATCH", f"http://testserver/api/v1/element/{elt.id}/")]
1552
1573
 
1553
1574
 
1554
1575
  @pytest.mark.usefixtures("_mock_cached_elements", "_mock_cached_images")
@@ -1860,7 +1881,7 @@ def test_list_element_children_api_error(responses, mock_elements_worker):
1860
1881
  responses.add(
1861
1882
  responses.GET,
1862
1883
  "http://testserver/api/v1/elements/12341234-1234-1234-1234-123412341234/children/",
1863
- status=500,
1884
+ status=418,
1864
1885
  )
1865
1886
 
1866
1887
  with pytest.raises(
@@ -2392,7 +2413,7 @@ def test_list_element_parents_api_error(responses, mock_elements_worker):
2392
2413
  responses.add(
2393
2414
  responses.GET,
2394
2415
  "http://testserver/api/v1/elements/12341234-1234-1234-1234-123412341234/parents/",
2395
- status=500,
2416
+ status=418,
2396
2417
  )
2397
2418
 
2398
2419
  with pytest.raises(
@@ -15,6 +15,7 @@ from arkindex_worker.cache import (
15
15
  from arkindex_worker.models import Transcription
16
16
  from arkindex_worker.worker.entity import MissingEntityType
17
17
  from arkindex_worker.worker.transcription import TextOrientation
18
+ from tests import CORPUS_ID
18
19
 
19
20
  from . import BASE_API_CALLS
20
21
 
@@ -90,7 +91,7 @@ def test_create_entity_api_error(responses, mock_elements_worker):
90
91
  responses.add(
91
92
  responses.POST,
92
93
  "http://testserver/api/v1/entity/",
93
- status=500,
94
+ status=418,
94
95
  )
95
96
 
96
97
  with pytest.raises(ErrorResponse):
@@ -99,17 +100,10 @@ def test_create_entity_api_error(responses, mock_elements_worker):
99
100
  type="person",
100
101
  )
101
102
 
102
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
103
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
103
104
  assert [
104
105
  (call.request.method, call.request.url) for call in responses.calls
105
- ] == BASE_API_CALLS + [
106
- # We retry 5 times the API call
107
- ("POST", "http://testserver/api/v1/entity/"),
108
- ("POST", "http://testserver/api/v1/entity/"),
109
- ("POST", "http://testserver/api/v1/entity/"),
110
- ("POST", "http://testserver/api/v1/entity/"),
111
- ("POST", "http://testserver/api/v1/entity/"),
112
- ]
106
+ ] == BASE_API_CALLS + [("POST", "http://testserver/api/v1/entity/")]
113
107
 
114
108
 
115
109
  def test_create_entity(responses, mock_elements_worker):
@@ -139,7 +133,7 @@ def test_create_entity(responses, mock_elements_worker):
139
133
  "type_id": "person-entity-type-id",
140
134
  "metas": {},
141
135
  "validated": None,
142
- "corpus": "11111111-1111-1111-1111-111111111111",
136
+ "corpus": CORPUS_ID,
143
137
  "worker_run_id": "56785678-5678-5678-5678-567856785678",
144
138
  }
145
139
  assert entity_id == "12345678-1234-1234-1234-123456789123"
@@ -152,7 +146,7 @@ def test_create_entity_missing_type(responses, mock_elements_worker):
152
146
  # Call to list entity types
153
147
  responses.add(
154
148
  responses.GET,
155
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/entity-types/",
149
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/entity-types/",
156
150
  status=200,
157
151
  json={
158
152
  "count": 1,
@@ -177,7 +171,7 @@ def test_create_entity_missing_type(responses, mock_elements_worker):
177
171
  ] == BASE_API_CALLS + [
178
172
  (
179
173
  "GET",
180
- "http://testserver/api/v1/corpus/11111111-1111-1111-1111-111111111111/entity-types/",
174
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/entity-types/",
181
175
  ),
182
176
  ]
183
177
 
@@ -209,7 +203,7 @@ def test_create_entity_with_cache(responses, mock_elements_worker_with_cache):
209
203
  "type_id": "person-entity-type-id",
210
204
  "metas": {},
211
205
  "validated": None,
212
- "corpus": "11111111-1111-1111-1111-111111111111",
206
+ "corpus": CORPUS_ID,
213
207
  "worker_run_id": "56785678-5678-5678-5678-567856785678",
214
208
  }
215
209
  assert entity_id == "12345678-1234-1234-1234-123456789123"
@@ -387,7 +381,7 @@ def test_create_transcription_entity_api_error(responses, mock_elements_worker):
387
381
  responses.add(
388
382
  responses.POST,
389
383
  "http://testserver/api/v1/transcription/11111111-1111-1111-1111-111111111111/entity/",
390
- status=500,
384
+ status=418,
391
385
  )
392
386
 
393
387
  with pytest.raises(ErrorResponse):
@@ -403,31 +397,14 @@ def test_create_transcription_entity_api_error(responses, mock_elements_worker):
403
397
  length=10,
404
398
  )
405
399
 
406
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
400
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
407
401
  assert [
408
402
  (call.request.method, call.request.url) for call in responses.calls
409
403
  ] == BASE_API_CALLS + [
410
- # We retry 5 times the API call
411
404
  (
412
405
  "POST",
413
406
  "http://testserver/api/v1/transcription/11111111-1111-1111-1111-111111111111/entity/",
414
- ),
415
- (
416
- "POST",
417
- "http://testserver/api/v1/transcription/11111111-1111-1111-1111-111111111111/entity/",
418
- ),
419
- (
420
- "POST",
421
- "http://testserver/api/v1/transcription/11111111-1111-1111-1111-111111111111/entity/",
422
- ),
423
- (
424
- "POST",
425
- "http://testserver/api/v1/transcription/11111111-1111-1111-1111-111111111111/entity/",
426
- ),
427
- (
428
- "POST",
429
- "http://testserver/api/v1/transcription/11111111-1111-1111-1111-111111111111/entity/",
430
- ),
407
+ )
431
408
  ]
432
409
 
433
410
 
@@ -746,10 +723,9 @@ def test_list_transcription_entities(fake_dummy_worker):
746
723
 
747
724
 
748
725
  def test_list_corpus_entities(responses, mock_elements_worker):
749
- corpus_id = "11111111-1111-1111-1111-111111111111"
750
726
  responses.add(
751
727
  responses.GET,
752
- f"http://testserver/api/v1/corpus/{corpus_id}/entities/",
728
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/entities/",
753
729
  json={
754
730
  "count": 1,
755
731
  "next": None,
@@ -775,7 +751,7 @@ def test_list_corpus_entities(responses, mock_elements_worker):
775
751
  ] == BASE_API_CALLS + [
776
752
  (
777
753
  "GET",
778
- f"http://testserver/api/v1/corpus/{corpus_id}/entities/",
754
+ f"http://testserver/api/v1/corpus/{CORPUS_ID}/entities/",
779
755
  ),
780
756
  ]
781
757
 
@@ -807,13 +783,13 @@ def test_check_required_entity_types(responses, mock_elements_worker):
807
783
  matchers.json_params_matcher(
808
784
  {
809
785
  "name": "new-entity",
810
- "corpus": "11111111-1111-1111-1111-111111111111",
786
+ "corpus": CORPUS_ID,
811
787
  }
812
788
  )
813
789
  ],
814
790
  json={
815
791
  "id": "new-entity-id",
816
- "corpus": "11111111-1111-1111-1111-111111111111",
792
+ "corpus": CORPUS_ID,
817
793
  "name": "new-entity",
818
794
  "color": "ffd1b3",
819
795
  },
@@ -0,0 +1,65 @@
1
+ import json
2
+
3
+ import pytest
4
+ from apistar.exceptions import ErrorResponse
5
+
6
+ from . import BASE_API_CALLS
7
+
8
+
9
+ @pytest.mark.parametrize(
10
+ ("data", "error_message"),
11
+ [
12
+ (None, "url shouldn't be null and should be of type str"),
13
+ (1234, "url shouldn't be null and should be of type str"),
14
+ ],
15
+ )
16
+ def test_create_iiif_url_wrong_data(data, error_message, mock_elements_worker):
17
+ with pytest.raises(AssertionError, match=error_message):
18
+ mock_elements_worker.create_iiif_url(url=data)
19
+
20
+
21
+ def test_create_iiif_url_api_error(responses, mock_elements_worker):
22
+ responses.add(
23
+ responses.POST,
24
+ "http://testserver/api/v1/image/iiif/url/",
25
+ status=418,
26
+ )
27
+
28
+ with pytest.raises(ErrorResponse):
29
+ mock_elements_worker.create_iiif_url("http://url/to/my/image")
30
+
31
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
32
+ assert [
33
+ (call.request.method, call.request.url) for call in responses.calls
34
+ ] == BASE_API_CALLS + [("POST", "http://testserver/api/v1/image/iiif/url/")]
35
+
36
+
37
+ def test_create_iiif_url(responses, mock_elements_worker):
38
+ responses.add(
39
+ responses.POST,
40
+ "http://testserver/api/v1/image/iiif/url/",
41
+ status=201,
42
+ json={
43
+ "id": "cafecafe-cafe-cafe-cafe-cafecafecafe",
44
+ "url": "http://url/to/my/image",
45
+ "status": "checked",
46
+ "server": {
47
+ "id": 5,
48
+ "display_name": "My server",
49
+ "url": "http://url/to/my",
50
+ "max_width": 42,
51
+ "max_height": 42,
52
+ },
53
+ },
54
+ )
55
+
56
+ image = mock_elements_worker.create_iiif_url("http://url/to/my/image")
57
+
58
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
59
+ assert [
60
+ (call.request.method, call.request.url) for call in responses.calls
61
+ ] == BASE_API_CALLS + [("POST", "http://testserver/api/v1/image/iiif/url/")]
62
+ assert json.loads(responses.calls[-1].request.body) == {
63
+ "url": "http://url/to/my/image"
64
+ }
65
+ assert image.id == "cafecafe-cafe-cafe-cafe-cafecafecafe"