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