Skip to content
105 changes: 105 additions & 0 deletions specifyweb/backend/businessrules/tests/test_batch_image_upload.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import json
from unittest.mock import patch

from django.test import Client
from specifyweb.specify import models

from specifyweb.backend.stored_queries.tests.tests import SQLAlchemySetup
from specifyweb.backend.stored_queries.tests.test_views.raw_query import (
get_simple_query,
)


class TestCollectionobjectCatalognumber(SQLAlchemySetup):
@patch("specifyweb.backend.stored_queries.execution.models.session_context")
def test_match_collectionobject_by_cat_number(self, session_context):
session_context.return_value = TestCollectionobjectCatalognumber.test_session_context()

catnum = self.collectionobjects[0]
catnum.catalognumber = "123"
catnum.save()

c = Client()
c.force_login(self.specifyuser)


query = get_simple_query(self.specifyuser)
query["fields"][0].update({
"operstart": 10,
"startvalue": "123",
})

response = c.post("/stored_query/ephemeral/",query,content_type="application/json",)

self.assertEqual(response.status_code, 200)
self.assertEqual(
json.loads(response.content.decode()),
{"results": [[catnum.id, "123"]]},
)

class TestCollectionobjectAltCatalogNumber(SQLAlchemySetup):
@patch("specifyweb.backend.stored_queries.execution.models.session_context")
def test_match_collectionobject_by_previous_alt_cat_number(self, session_context):
session_context.return_value = TestCollectionobjectAltCatalogNumber.test_session_context()

altcat = self.collectionobjects[0]
altcat.altcatalognumber = "123"
altcat.save()

c = Client()
c.force_login(self.specifyuser)

query = get_simple_query(self.specifyuser)
query["fields"][0].update({
"stringid": "1.collectionobject.altCatalogNumber",
"fieldname": "altCatalogNumber",
"operstart": 10,
"startvalue": "123",
})

response = c.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": [[altcat.id, "123"]]},
)

class TestTaxonFullname(SQLAlchemySetup):
@patch("specifyweb.backend.stored_queries.execution.models.session_context")
def test_match_taxon_by_full_name(self, session_context):
session_context.return_value = TestTaxonFullname.test_session_context()

root = self.taxontreedef.treedefitems.create(name="Taxonomy Root", rankid=0)
taxon = root.treeentries.create(
name="John Doe",
fullname="John Doe",
definition=self.taxontreedef,
rankid=root.rankid,
)
models.Determination.objects.create(
collectionobject=self.collectionobjects[0],
taxon=taxon,
iscurrent=True,
)

c = Client()
c.force_login(self.specifyuser)

query = get_simple_query(self.specifyuser)
query["fields"][0].update({
"tablelist": "1,9-determinations,4",
"stringid": "1,9-determinations,4.taxon.fullname",
"fieldname": "fullname",
"operstart": 1,
"startvalue": "John Doe",
})

response = c.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": [[self.collectionobjects[0].id, "John Doe"]]},)
Loading