From 40cbb0ec047bbcd967a3e79b050a242c16a94490 Mon Sep 17 00:00:00 2001 From: NolanB <nboukachab@teklia.com> Date: Tue, 6 Sep 2022 11:48:37 +0200 Subject: [PATCH] Work in progress --- arkindex_worker/worker/entity.py | 24 +--- tests/test_elements_worker/test_elements.py | 23 ++-- tests/test_elements_worker/test_entities.py | 115 +++++--------------- 3 files changed, 43 insertions(+), 119 deletions(-) diff --git a/arkindex_worker/worker/entity.py b/arkindex_worker/worker/entity.py index 4be10162..adc82098 100644 --- a/arkindex_worker/worker/entity.py +++ b/arkindex_worker/worker/entity.py @@ -8,7 +8,7 @@ from peewee import IntegrityError from arkindex_worker import logger from arkindex_worker.cache import CachedElement, CachedEntity, CachedTranscriptionEntity -from arkindex_worker.models import Corpus, Element, Transcription +from arkindex_worker.models import Element, Transcription class EntityType(Enum): @@ -196,39 +196,25 @@ class EntityMixin(object): def list_corpus_entities( self, - corpus: Corpus, name: str = None, - parent: str or Element = None, + parent: Element = None, ): """ List all entities in a corpus This method does not support cache - - :param corpus Corpus: The corpus that contains the entities to list. :param name str: For filter entities by part of their name (case-insensitive) :param parent str: uuid for restrict entities to those linked to all transcriptions of an element and all its descendants. Note that links to metadata are ignored. """ query_params = {} - assert corpus and isinstance( - corpus, Corpus - ), "corpus shouldn't be null and should be a Corpus" if name is not None: assert name and isinstance(name, str), "name should be of type str" query_params["name"] = name if parent is not None: - assert ( - parent - and isinstance(parent, str) - or parent - and isinstance(parent, Element) - ), "parent should be of type str or Element" - query_params["parent"] = parent - - if type(parent) == Element: - query_params["parent"] = parent.id + assert isinstance(parent, Element), "parent should be of type Element" + query_params["parent"] = parent.id return self.api_client.paginate( - "ListCorpusEntities", id=corpus.id, **query_params + "ListCorpusEntities", id=self.corpus_id, **query_params ) diff --git a/tests/test_elements_worker/test_elements.py b/tests/test_elements_worker/test_elements.py index 0d5d18cc..691241c8 100644 --- a/tests/test_elements_worker/test_elements.py +++ b/tests/test_elements_worker/test_elements.py @@ -271,10 +271,10 @@ def test_database_arg_cache_missing_version_table( def test_load_corpus_classes_api_error(responses, mock_elements_worker): - mock_elements_worker.corpus_id = "12341234-1234-1234-1234-123412341234" + corpus_id = "11111111-1111-1111-1111-111111111111" responses.add( responses.GET, - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", status=500, ) @@ -291,33 +291,34 @@ def test_load_corpus_classes_api_error(responses, mock_elements_worker): # We do 5 retries ( "GET", - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", ), ( "GET", - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", ), ( "GET", - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", ), ( "GET", - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", ), ( "GET", - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", ), ] assert not mock_elements_worker.classes def test_load_corpus_classes(responses, mock_elements_worker): - mock_elements_worker.corpus_id = "12341234-1234-1234-1234-123412341234" + corpus_id = "11111111-1111-1111-1111-111111111111" + responses.add( responses.GET, - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", status=200, json={ "count": 3, @@ -348,11 +349,11 @@ def test_load_corpus_classes(responses, mock_elements_worker): ] == BASE_API_CALLS + [ ( "GET", - f"http://testserver/api/v1/corpus/{mock_elements_worker.corpus_id}/classes/", + f"http://testserver/api/v1/corpus/{corpus_id}/classes/", ), ] assert mock_elements_worker.classes == { - "12341234-1234-1234-1234-123412341234": { + "11111111-1111-1111-1111-111111111111": { "good": "0000", "average": "1111", "bad": "2222", diff --git a/tests/test_elements_worker/test_entities.py b/tests/test_elements_worker/test_entities.py index 70ca3769..fa538bf9 100644 --- a/tests/test_elements_worker/test_entities.py +++ b/tests/test_elements_worker/test_entities.py @@ -11,7 +11,7 @@ from arkindex_worker.cache import ( CachedTranscription, CachedTranscriptionEntity, ) -from arkindex_worker.models import Corpus, Element, Transcription +from arkindex_worker.models import Element, Transcription from arkindex_worker.worker import EntityType from arkindex_worker.worker.transcription import TextOrientation @@ -656,101 +656,38 @@ def test_list_transcription_entities(fake_dummy_worker): assert len(fake_dummy_worker.api_client.responses) == 0 -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> a8b7730... Modif code with the review -======= ->>>>>>> a8b7730... Modif code with the review @pytest.mark.parametrize( "name, parent", [ (None, None), - ("fake_name", "fake_parent"), ("fake_name", Element({"id": "fake_parent_id"})), - (None, "fake_parent"), + (None, Element({"id": "fake_parent_id"})), ("fake_name", None), ], ) -def test_list_corpus_entities(fake_dummy_worker, name, parent): -<<<<<<< HEAD -<<<<<<< HEAD - corpus = Corpus({"id": "fake_corpus_id"}) - query_params = {} - if name is not None: - query_params["name"] = name - if parent is not None: - query_params["parent"] = parent - if type(parent) == Element: - query_params["parent"] = parent.id - - fake_dummy_worker.api_client.add_response( - "ListCorpusEntities", - id=corpus.id, - response={"id": "fake_entity_id"}, - **query_params, - ) - - assert fake_dummy_worker.list_corpus_entities(corpus, **query_params) == { - "id": "fake_entity_id" - } -======= -def test_list_corpus_entities(fake_dummy_worker): -======= ->>>>>>> a8b7730... Modif code with the review - corpus = Corpus({"id": "fake_corpus_id"}) - query_params = {} - if name is not None: - query_params["name"] = name - if parent is not None: - query_params["parent"] = parent - if type(parent) == Element: - query_params["parent"] = parent.id - - fake_dummy_worker.api_client.add_response( - "ListCorpusEntities", - id=corpus.id, - response={"id": "fake_entity_id"}, - **query_params, - ) - - assert fake_dummy_worker.list_corpus_entities(corpus, **query_params) == { - "id": "fake_entity_id" - } -<<<<<<< HEAD - ->>>>>>> fb7d0b7... Add a list_corpus_entities() method to entity.py -======= ->>>>>>> a8b7730... Modif code with the review -======= -def test_list_corpus_entities(fake_dummy_worker): -======= ->>>>>>> a8b7730... Modif code with the review - corpus = Corpus({"id": "fake_corpus_id"}) - query_params = {} - if name is not None: - query_params["name"] = name - if parent is not None: - query_params["parent"] = parent - if type(parent) == Element: - query_params["parent"] = parent.id - - fake_dummy_worker.api_client.add_response( - "ListCorpusEntities", - id=corpus.id, - response={"id": "fake_entity_id"}, - **query_params, +def test_list_corpus_entities(responses, mock_elements_worker, name, parent): + corpus_id = "11111111-1111-1111-1111-111111111111" + responses.add( + responses.GET, + f"http://testserver/api/v1/corpus/{corpus_id}/entities/", + json=[ + {"id": "fake_entity_id"}, + ], ) - assert fake_dummy_worker.list_corpus_entities(corpus, **query_params) == { - "id": "fake_entity_id" - } -<<<<<<< HEAD - ->>>>>>> fb7d0b7... Add a list_corpus_entities() method to entity.py -======= ->>>>>>> a8b7730... Modif code with the review - assert len(fake_dummy_worker.api_client.history) == 1 - assert len(fake_dummy_worker.api_client.responses) == 0 + corpus_entities = mock_elements_worker.list_corpus_entities() + print(*responses.calls, sep="\n") + assert len(responses.calls) == len(BASE_API_CALLS) + 1 + assert [ + (call.request.method, call.request.url) for call in responses.calls + ] == BASE_API_CALLS + [ + ( + "GET", + f"http://testserver/api/v1/corpus/{corpus_id}/entities/", + ), + ] + assert corpus_entities == [ + { + "id": "fake_entity_id", + } + ] -- GitLab