From a2e1a13dad2f172bb8fe51519d8ca93b54bd7559 Mon Sep 17 00:00:00 2001
From: Kenzo-Hugo Hillion <hillion.kenzo@posteo.net>
Date: Mon, 6 Dec 2021 19:51:47 +0100
Subject: [PATCH] improve deletion of test entry

---
 .../app/tests/api/endpoints/base_api_test.py  |  5 ++
 .../app/tests/api/endpoints/test_catalogs.py  | 36 +++++++-------
 backend/app/tests/api/endpoints/test_keggs.py | 34 +++++++-------
 .../tests/api/endpoints/test_ncbi_taxonomy.py | 47 +++++++++----------
 4 files changed, 63 insertions(+), 59 deletions(-)

diff --git a/backend/app/tests/api/endpoints/base_api_test.py b/backend/app/tests/api/endpoints/base_api_test.py
index 322fdd3..f97a9a9 100644
--- a/backend/app/tests/api/endpoints/base_api_test.py
+++ b/backend/app/tests/api/endpoints/base_api_test.py
@@ -42,3 +42,8 @@ class BaseApiTests(unittest.TestCase):
     @classmethod
     def tearDownClass(cls) -> None:
         clear_di()
+
+    def _delete_entry(self, entry):
+        self.session.rollback()
+        self.session.delete(entry)
+        self.session.commit()
diff --git a/backend/app/tests/api/endpoints/test_catalogs.py b/backend/app/tests/api/endpoints/test_catalogs.py
index a1aa79f..51279c2 100644
--- a/backend/app/tests/api/endpoints/test_catalogs.py
+++ b/backend/app/tests/api/endpoints/test_catalogs.py
@@ -42,15 +42,17 @@ class TestCatalogs(BaseApiTests):
         cat_name = "created_catalog"
         json_input = {"name": cat_name}
         expected_data = {"name": cat_name, "doi": None}
-        # When
-        response = self.client.post("/api/catalogs/", json=json_input)
-        # Then
-        self.assertEqual(response.status_code, 200)
-        self.assertDictEqual(response.json(), expected_data)
-        # Finally delete item
-        cat = self.session.exec(select(Catalog).where(Catalog.name == cat_name)).one()
-        self.session.delete(cat)
-        self.session.commit()
+        try:
+            # When
+            response = self.client.post("/api/catalogs/", json=json_input)
+            # Then
+            self.assertEqual(response.status_code, 200)
+            self.assertDictEqual(response.json(), expected_data)
+        finally:
+            cat = self.session.exec(
+                select(Catalog).where(Catalog.name == cat_name)
+            ).one()
+            self._delete_entry(cat)
 
     def test_create_existing_catalog(self):
         # Given
@@ -95,11 +97,11 @@ class TestCatalogs(BaseApiTests):
         self.session.commit()
         json_input = {"name": name_to_update, "doi": "12345"}
         expected_data = json_input
-        # When
-        response = self.client.put(f"/api/catalogs/", json=json_input)
-        # Then
-        self.assertEqual(response.status_code, 200)
-        self.assertDictEqual(response.json(), expected_data)
-        # Finally
-        self.session.delete(catalog_to_update)
-        self.session.commit()
+        try:
+            # When
+            response = self.client.put(f"/api/catalogs/", json=json_input)
+            # Then
+            self.assertEqual(response.status_code, 200)
+            self.assertDictEqual(response.json(), expected_data)
+        finally:
+            self._delete_entry(catalog_to_update)
diff --git a/backend/app/tests/api/endpoints/test_keggs.py b/backend/app/tests/api/endpoints/test_keggs.py
index de41faf..4a9b18b 100644
--- a/backend/app/tests/api/endpoints/test_keggs.py
+++ b/backend/app/tests/api/endpoints/test_keggs.py
@@ -43,15 +43,15 @@ class TestKeggs(BaseApiTests):
         kegg_name = "created_kegg"
         json_input = {"kegg_id": kegg_id, "name": kegg_name}
         expected_data = {"kegg_id": kegg_id, "name": kegg_name}
-        # When
-        response = self.client.post("/api/keggs/", json=json_input)
-        # Then
-        self.assertEqual(response.status_code, 200)
-        self.assertDictEqual(response.json(), expected_data)
-        # Finally delete item
-        kegg = self.session.exec(select(Kegg).where(Kegg.kegg_id == kegg_id)).one()
-        self.session.delete(kegg)
-        self.session.commit()
+        try:
+            # When
+            response = self.client.post("/api/keggs/", json=json_input)
+            # Then
+            self.assertEqual(response.status_code, 200)
+            self.assertDictEqual(response.json(), expected_data)
+        finally:
+            kegg = self.session.exec(select(Kegg).where(Kegg.kegg_id == kegg_id)).one()
+            self._delete_entry(kegg)
 
     def test_create_existing_kegg(self):
         # Given
@@ -100,11 +100,11 @@ class TestKeggs(BaseApiTests):
         self.session.commit()
         json_input = {"kegg_id": kegg_id, "name": new_name}
         expected_data = json_input
-        # When
-        response = self.client.put(f"/api/keggs/", json=json_input)
-        # Then
-        self.assertEqual(response.status_code, 200)
-        self.assertDictEqual(response.json(), expected_data)
-        # Finally
-        self.session.delete(kegg_to_update)
-        self.session.commit()
+        try:
+            # When
+            response = self.client.put(f"/api/keggs/", json=json_input)
+            # Then
+            self.assertEqual(response.status_code, 200)
+            self.assertDictEqual(response.json(), expected_data)
+        finally:
+            self._delete_entry(kegg_to_update)
diff --git a/backend/app/tests/api/endpoints/test_ncbi_taxonomy.py b/backend/app/tests/api/endpoints/test_ncbi_taxonomy.py
index 8bc7356..a0e7377 100644
--- a/backend/app/tests/api/endpoints/test_ncbi_taxonomy.py
+++ b/backend/app/tests/api/endpoints/test_ncbi_taxonomy.py
@@ -58,17 +58,17 @@ class TestNcbiTaxonomys(BaseApiTests):
             "name": ncbi_taxonomy_name,
             "rank": rank_created,
         }
-        # When
-        response = self.client.post("/api/ncbi_taxonomy/", json=json_input)
-        # Then
-        self.assertEqual(response.status_code, 200)
-        self.assertDictEqual(response.json(), expected_data)
-        # Finally delete item
-        ncbi_tax = self.session.exec(
-            select(NcbiTaxonomy).where(NcbiTaxonomy.tax_id == tax_id)
-        ).one()
-        self.session.delete(ncbi_tax)
-        self.session.commit()
+        try:
+            # When
+            response = self.client.post("/api/ncbi_taxonomy/", json=json_input)
+            # Then
+            self.assertEqual(response.status_code, 200)
+            self.assertDictEqual(response.json(), expected_data)
+        finally:
+            ncbi_tax = self.session.exec(
+                select(NcbiTaxonomy).where(NcbiTaxonomy.tax_id == tax_id)
+            ).one()
+            self._delete_entry(ncbi_tax)
 
     def test_create_existing_ncbi_taxonomy(self):
         # Given
@@ -124,16 +124,16 @@ class TestNcbiTaxonomys(BaseApiTests):
         self.session.commit()
         json_input = {"tax_id": tax_id, "name": new_name}
         expected_data = {"tax_id": tax_id, "name": new_name, "rank": rank}
-        # When
-        response = self.client.put(
-            f"/api/ncbi_taxonomy/?exclude_none=true", json=json_input
-        )
-        # Then
-        self.assertEqual(response.status_code, 200)
-        self.assertDictEqual(response.json(), expected_data)
-        # Finally
-        self.session.delete(ncbi_taxonomy_to_update)
-        self.session.commit()
+        try:
+            # When
+            response = self.client.put(
+                f"/api/ncbi_taxonomy/?exclude_none=true", json=json_input
+            )
+            # Then
+            self.assertEqual(response.status_code, 200)
+            self.assertDictEqual(response.json(), expected_data)
+        finally:
+            self._delete_entry(ncbi_taxonomy_to_update)
 
     def test_update_ncbi_taxonomy_no_rank_exclude_none_false(self):
         # Given
@@ -154,8 +154,5 @@ class TestNcbiTaxonomys(BaseApiTests):
                 f"/api/ncbi_taxonomy/?exclude_none=false", json=json_input
             )
             self.assertEqual(response.status_code, 422)
-        # Finally
         finally:
-            self.session.rollback()
-            self.session.delete(ncbi_taxonomy_to_update)
-            self.session.commit()
+            self._delete_entry(ncbi_taxonomy_to_update)
-- 
GitLab