diff --git a/applications/portal/backend/api/services/antibody_service.py b/applications/portal/backend/api/services/antibody_service.py index f0f345e1..95aae8f6 100644 --- a/applications/portal/backend/api/services/antibody_service.py +++ b/applications/portal/backend/api/services/antibody_service.py @@ -46,6 +46,9 @@ def create_antibody(body: AddAntibodyDTO, userid: str) -> AntibodyDTO: antibody.uid = userid antibody.save() + if antibody.get_duplicate(): + raise DuplicatedAntibody(antibody_mapper.to_dto(antibody)) + return antibody_mapper.to_dto(antibody) diff --git a/applications/portal/backend/api/tests/test_antibodies.py b/applications/portal/backend/api/tests/test_antibodies.py index 80c83d94..4cb88388 100644 --- a/applications/portal/backend/api/tests/test_antibodies.py +++ b/applications/portal/backend/api/tests/test_antibodies.py @@ -3,6 +3,7 @@ from api.services.search_service import fts_antibodies from api.models import Vendor, VendorDomain, VendorSynonym from api.repositories.maintainance import refresh_search_view +from api.utilities.exceptions import DuplicatedAntibody from openapi.models import ( AddAntibody as AddAntibodyDTO, @@ -108,14 +109,14 @@ def test_create(self): a.save() duplicated = AddAntibodyDTO(**example_ab) - # duplicated.vendorName = "My vendor synonym" # should keep the same vendor and add a synonym - da = create_antibody(duplicated, "bbb") - - assert da.accession != da.abId - assert da.abId == ab.abId - assert da.status == Status.QUEUE - assert da.vendorId == ab.vendorId - assert da.vendorName == "My vendorname" + with self.assertRaises(DuplicatedAntibody) as exc: + create_antibody(duplicated, "bbb") + + da = exc.exception.antibody + self.assertEqual(da.abId, ab.abId) + self.assertEqual(da.status, Status.QUEUE) + self.assertEqual(da.vendorId, ab.vendorId) + self.assertEqual(da.vendorName, "My vendorname") assert VendorDomain.objects.all().count() == 2 assert Vendor.objects.all().count() == 1