From 357ec1b57377ca4e92337905f09792ec12103e08 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 01/21] [test] Add attachment path test helpers --- .../tests/test_attachment_import_paths.py | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 2ff7778162d..f2cd536f096 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -1,4 +1,5 @@ import json +import unittest from unittest.mock import patch from django.test import Client @@ -123,4 +124,108 @@ def test_match_borrow_by_invoice_number(self, session_context): {"results": [[borrow.id, invoicenumber]]}, ) + def _assert_path(self, table_name, field_name, value, record_id): + model = getattr(models, table_name.capitalize()) + client = Client() + client.force_login(self.specifyuser) + + query = get_simple_query(self.specifyuser) + query["contexttableid"] = model.specify_model.tableId + query["contextname"] = table_name + query["fields"][0].update( + { + "tablelist": str(model.specify_model.tableId), + "stringid": ( + f"{model.specify_model.tableId}." + f"{table_name.lower()}.{field_name}" + ), + "fieldname": field_name, + "operstart": 10, + "startvalue": value, + } + ) + + response = client.post( + "/stored_query/ephemeral/", + query, + content_type="application/json", + ) + + self.assertEqual(response.status_code, 200, response.content.decode()) + self.assertEqual( + json.loads(response.content.decode()), + {"results": [[record_id, value]]}, + ) + + def _fresh_session_context(self): + return type(self).test_session_context() + + def _create_taxon(self): + item = models.Taxontreedefitem.objects.create( + treedef=self.taxontreedef, name="Species", rankid=1 + ) + return models.Taxon.objects.create( + name="Taxon A", + fullname="Taxon A", + rankid=1, + definition=self.taxontreedef, + definitionitem=item, + ) + def _create_storage(self): + treedef = models.Storagetreedef.objects.create(name="Test storage") + item = models.Storagetreedefitem.objects.create( + treedef=treedef, name="Room", rankid=1 + ) + return models.Storage.objects.create( + name="Storage A", + fullname="Storage A", + rankid=1, + definition=treedef, + definitionitem=item, + ) + + def _create_preparation(self, barcode, guid): + preptype, _ = models.Preptype.objects.get_or_create( + name="Test PrepType", collection=self.collection + ) + return models.Preparation.objects.create( + collectionmemberid=self.collection.id, + collectionobject=self.collectionobjects[2], + preptype=preptype, + barcode=barcode, + guid=guid, + ) + + def _create_exchange_in(self): + return models.Exchangein.objects.create( + division=self.division, + agentcatalogedby=self.agent, + agentreceivedfrom=self.agent, + exchangeinnumber="EXIN-1", + ) + + def _create_exchange_out(self): + return models.Exchangeout.objects.create( + division=self.division, + agentcatalogedby=self.agent, + agentsentto=self.agent, + exchangeoutnumber="EXOUT-1", + ) + + def _create_reference(self, title, guid): + return models.Referencework.objects.create( + institution=self.institution, + referenceworktype=0, + title=title, + guid=guid, + ) + + def _create_locality(self, uniqueidentifier, guid): + return models.Locality.objects.create( + discipline=self.discipline, + localityname="Locality A", + srclatlongunit=0, + uniqueidentifier=uniqueidentifier, + guid=guid, + ) From 57bc1e21ca6042ca7ac26972c192dcc38be64fa0 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 02/21] [test] Match Taxon by full name --- .../stored_queries/tests/test_attachment_import_paths.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index f2cd536f096..0123cc54a30 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -229,3 +229,9 @@ def _create_locality(self, uniqueidentifier, guid): uniqueidentifier=uniqueidentifier, guid=guid, ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_taxon_by_full_name(self, session_context): + session_context.side_effect = self._fresh_session_context + taxon = self._create_taxon() + self._assert_path("Taxon", "fullName", "Taxon A", taxon.id) From 3b06c57067b7fc274abae1455026581dcff0b021 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 03/21] [test] Match Storage by full name --- .../stored_queries/tests/test_attachment_import_paths.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 0123cc54a30..3f3811c4173 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -235,3 +235,10 @@ def test_match_taxon_by_full_name(self, session_context): session_context.side_effect = self._fresh_session_context taxon = self._create_taxon() self._assert_path("Taxon", "fullName", "Taxon A", taxon.id) + + @unittest.skip("Storage.fullName currently produces an empty SQL query") + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_storage_by_full_name(self, session_context): + session_context.side_effect = self._fresh_session_context + storage = self._create_storage() + self._assert_path("Storage", "fullName", "Storage A", storage.id) From ee0b39844744beef702cb3a4891000579e2fe93a Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 04/21] [test] Match Collecting Event by GUID --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 3f3811c4173..d9a84f4a2d4 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -242,3 +242,13 @@ def test_match_storage_by_full_name(self, session_context): session_context.side_effect = self._fresh_session_context storage = self._create_storage() self._assert_path("Storage", "fullName", "Storage A", storage.id) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_collecting_event_by_guid(self, session_context): + session_context.side_effect = self._fresh_session_context + collectingevent = self.collectingevent + collectingevent.guid = "CE-GUID" + collectingevent.save() + self._assert_path( + "CollectingEvent", "guid", "CE-GUID", collectingevent.id + ) From 8c8f92672867777300a991b73089dfe5734a2bda Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 05/21] [test] Match Collecting Event by field number --- .../tests/test_attachment_import_paths.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index d9a84f4a2d4..8595a4306b5 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -252,3 +252,16 @@ def test_match_collecting_event_by_guid(self, session_context): self._assert_path( "CollectingEvent", "guid", "CE-GUID", collectingevent.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_collecting_event_by_field_number(self, session_context): + session_context.side_effect = self._fresh_session_context + collectingevent = self.collectingevent + collectingevent.stationfieldnumber = "CE-FIELD" + collectingevent.save() + self._assert_path( + "CollectingEvent", + "stationFieldNumber", + "CE-FIELD", + collectingevent.id, + ) From f9235679de509d25292f8ecdce992125fe3030bd Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 06/21] [test] Match Loan by loan number --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 8595a4306b5..0384c2140e9 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -265,3 +265,11 @@ def test_match_collecting_event_by_field_number(self, session_context): "CE-FIELD", collectingevent.id, ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_loan_by_loan_number(self, session_context): + session_context.side_effect = self._fresh_session_context + loan = models.Loan.objects.create( + discipline=self.discipline, loannumber="LOAN-1" + ) + self._assert_path("Loan", "loanNumber", "LOAN-1", loan.id) From 6dd6dc5810f0f1f429094057ba03aa4fc408a270 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 07/21] [test] Match Accession by accession number --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 0384c2140e9..a44ecb06123 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -273,3 +273,13 @@ def test_match_loan_by_loan_number(self, session_context): discipline=self.discipline, loannumber="LOAN-1" ) self._assert_path("Loan", "loanNumber", "LOAN-1", loan.id) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_accession_by_accession_number(self, session_context): + session_context.side_effect = self._fresh_session_context + accession = models.Accession.objects.create( + division=self.division, accessionnumber="ACC-1" + ) + self._assert_path( + "Accession", "accessionNumber", "ACC-1", accession.id + ) From 44d0c9c3f23a33b21147f6867c692791029125b6 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 08/21] [test] Match Gift by gift number --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index a44ecb06123..cff3b49ce4a 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -283,3 +283,11 @@ def test_match_accession_by_accession_number(self, session_context): self._assert_path( "Accession", "accessionNumber", "ACC-1", accession.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_gift_by_gift_number(self, session_context): + session_context.side_effect = self._fresh_session_context + gift = models.Gift.objects.create( + discipline=self.discipline, giftnumber="GIFT-1" + ) + self._assert_path("Gift", "giftNumber", "GIFT-1", gift.id) From 569b90317076ab654a188d1c985217be17e13f65 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 09/21] [test] Match Preparation by barcode --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index cff3b49ce4a..588c531b874 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -291,3 +291,13 @@ def test_match_gift_by_gift_number(self, session_context): discipline=self.discipline, giftnumber="GIFT-1" ) self._assert_path("Gift", "giftNumber", "GIFT-1", gift.id) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_preparation_by_barcode(self, session_context): + session_context.side_effect = self._fresh_session_context + preparation = self._create_preparation( + "PREP-BARCODE", "PREP-GUID-1" + ) + self._assert_path( + "Preparation", "barCode", "PREP-BARCODE", preparation.id + ) From 19de9c5a43448e21134a9cd36516bfc17bb30847 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:57 -0500 Subject: [PATCH 10/21] [test] Match Preparation by GUID --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 588c531b874..b6a5b30882c 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -301,3 +301,13 @@ def test_match_preparation_by_barcode(self, session_context): self._assert_path( "Preparation", "barCode", "PREP-BARCODE", preparation.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_preparation_by_guid(self, session_context): + session_context.side_effect = self._fresh_session_context + preparation = self._create_preparation( + "PREP-BARCODE-2", "PREP-GUID" + ) + self._assert_path( + "Preparation", "guid", "PREP-GUID", preparation.id + ) From bb650e1cfa8039f8c7fa213a7b785d864516df13 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 11/21] [test] Match Treatment Event by field number --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index b6a5b30882c..d84ed6e0f1c 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -311,3 +311,13 @@ def test_match_preparation_by_guid(self, session_context): self._assert_path( "Preparation", "guid", "PREP-GUID", preparation.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_treatment_event_by_field_number(self, session_context): + session_context.side_effect = self._fresh_session_context + treatment = models.Treatmentevent.objects.create( + fieldnumber="TREAT-1" + ) + self._assert_path( + "TreatmentEvent", "fieldNumber", "TREAT-1", treatment.id + ) From 8ac3d876c848e2b05232f4594d38217666ef32d1 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 12/21] [test] Match Exchange In by exchange in number --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index d84ed6e0f1c..e2f55b1763d 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -321,3 +321,11 @@ def test_match_treatment_event_by_field_number(self, session_context): self._assert_path( "TreatmentEvent", "fieldNumber", "TREAT-1", treatment.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_exchange_in_by_exchange_in_number(self, session_context): + session_context.side_effect = self._fresh_session_context + exchange = self._create_exchange_in() + self._assert_path( + "ExchangeIn", "exchangeInNumber", "EXIN-1", exchange.id + ) From b3dc799b01ab004a23cfd2f71d519cdaaca1a6f5 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 13/21] [test] Match Exchange Out by exchange out number --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index e2f55b1763d..7895f77258a 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -329,3 +329,11 @@ def test_match_exchange_in_by_exchange_in_number(self, session_context): self._assert_path( "ExchangeIn", "exchangeInNumber", "EXIN-1", exchange.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_exchange_out_by_exchange_out_number(self, session_context): + session_context.side_effect = self._fresh_session_context + exchange = self._create_exchange_out() + self._assert_path( + "ExchangeOut", "exchangeOutNumber", "EXOUT-1", exchange.id + ) From a85e84fe78bc2327dcd3bdab06bf855325666f40 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 14/21] [test] Match Reference Work by title --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 7895f77258a..3955eefd890 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -337,3 +337,11 @@ def test_match_exchange_out_by_exchange_out_number(self, session_context): self._assert_path( "ExchangeOut", "exchangeOutNumber", "EXOUT-1", exchange.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_reference_work_by_title(self, session_context): + session_context.side_effect = self._fresh_session_context + reference = self._create_reference("Ref Title", "REF-GUID-1") + self._assert_path( + "ReferenceWork", "title", "Ref Title", reference.id + ) From 29b450a5ec3e3bb013ce31f8857aaaec19092606 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 15/21] [test] Match Reference Work by GUID --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 3955eefd890..e3fc89b0747 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -345,3 +345,11 @@ def test_match_reference_work_by_title(self, session_context): self._assert_path( "ReferenceWork", "title", "Ref Title", reference.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_reference_work_by_guid(self, session_context): + session_context.side_effect = self._fresh_session_context + reference = self._create_reference("Ref Title 2", "REF-GUID-2") + self._assert_path( + "ReferenceWork", "guid", "REF-GUID-2", reference.id + ) From 6294b0c6202dd232564d924d209123477a5de529 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 16/21] [test] Match Locality by unique identifier --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index e3fc89b0747..2892f747ea7 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -353,3 +353,11 @@ def test_match_reference_work_by_guid(self, session_context): self._assert_path( "ReferenceWork", "guid", "REF-GUID-2", reference.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_locality_by_unique_identifier(self, session_context): + session_context.side_effect = self._fresh_session_context + locality = self._create_locality("LOC-1", "LOC-GUID-1") + self._assert_path( + "Locality", "uniqueIdentifier", "LOC-1", locality.id + ) From 547732c594534c5c2fb42bac3961d327fb90da94 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 17/21] [test] Match Locality by GUID --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 2892f747ea7..5119f1851cd 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -361,3 +361,11 @@ def test_match_locality_by_unique_identifier(self, session_context): self._assert_path( "Locality", "uniqueIdentifier", "LOC-1", locality.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_locality_by_guid(self, session_context): + session_context.side_effect = self._fresh_session_context + locality = self._create_locality("LOC-2", "LOC-GUID-2") + self._assert_path( + "Locality", "guid", "LOC-GUID-2", locality.id + ) From 7c699660746494cb9f9bc867647bc99e6d8233a1 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 18/21] [test] Match Permit by permit number --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 5119f1851cd..087c9bbaea3 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -369,3 +369,13 @@ def test_match_locality_by_guid(self, session_context): self._assert_path( "Locality", "guid", "LOC-GUID-2", locality.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_permit_by_permit_number(self, session_context): + session_context.side_effect = self._fresh_session_context + permit = models.Permit.objects.create( + institution=self.institution, permitnumber="PERMIT-1" + ) + self._assert_path( + "Permit", "permitNumber", "PERMIT-1", permit.id + ) From 67d5849b2b13ce2dcdd2c6dfdde7ce5bee0815db Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 19/21] [test] Match Agent by GUID --- .../stored_queries/tests/test_attachment_import_paths.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index 087c9bbaea3..a2730fb1dfc 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -379,3 +379,11 @@ def test_match_permit_by_permit_number(self, session_context): self._assert_path( "Permit", "permitNumber", "PERMIT-1", permit.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_agent_by_guid(self, session_context): + session_context.side_effect = self._fresh_session_context + agent = self.agent + agent.guid = "AGENT-GUID" + agent.save() + self._assert_path("Agent", "guid", "AGENT-GUID", agent.id) From 878e9e99f015ef71f8cddc4282a5192d73afd938 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 20/21] [test] Match Collecting Trip by name --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index a2730fb1dfc..c9b0f894280 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -387,3 +387,13 @@ def test_match_agent_by_guid(self, session_context): agent.guid = "AGENT-GUID" agent.save() self._assert_path("Agent", "guid", "AGENT-GUID", agent.id) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_collecting_trip_by_name(self, session_context): + session_context.side_effect = self._fresh_session_context + trip = models.Collectingtrip.objects.create( + discipline=self.discipline, collectingtripname="TRIP-1" + ) + self._assert_path( + "CollectingTrip", "collectingTripName", "TRIP-1", trip.id + ) From 98ea8e0d01de3f6cb0273a9f5ddd234df128e991 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 28 Oct 2026 11:31:58 -0500 Subject: [PATCH 21/21] [test] Match Deaccession by number --- .../tests/test_attachment_import_paths.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py index c9b0f894280..8bedeb57e25 100644 --- a/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py +++ b/specifyweb/backend/stored_queries/tests/test_attachment_import_paths.py @@ -397,3 +397,13 @@ def test_match_collecting_trip_by_name(self, session_context): self._assert_path( "CollectingTrip", "collectingTripName", "TRIP-1", trip.id ) + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_match_deaccession_by_deaccession_number(self, session_context): + session_context.side_effect = self._fresh_session_context + deaccession = models.Deaccession.objects.create( + deaccessionnumber="DEACC-1" + ) + self._assert_path( + "Deaccession", "deaccessionNumber", "DEACC-1", deaccession.id + )