From 1495fad31cd26d0dfcfecd5026b232c658f546e6 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Sat, 7 Oct 2023 00:34:46 +0200
Subject: [PATCH] TST: Add test for linkahead-server#237

---
 tests/test_issues_server.py |  4 ++--
 tests/test_messages.py      |  2 ++
 tests/test_query.py         | 40 +++++++++++++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index 4c4df4d..e231428 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -1444,7 +1444,7 @@ def test_235_long_name():
     try:
         rt1.insert()
     except Exception as exc:
-        assert type(exc) is not db.HTTPServerError
+        assert not isinstance(exc, db.HTTPServerError)
         # TODO more specific error should be asserted
 
     rt2 = db.RecordType(name="Short")
@@ -1453,5 +1453,5 @@ def test_235_long_name():
     try:
         rt2.update()
     except Exception as exc:
-        assert type(exc) is not db.HTTPServerError
+        assert not isinstance(exc, db.HTTPServerError)
         # TODO more specific error should be asserted
diff --git a/tests/test_messages.py b/tests/test_messages.py
index d1522d9..7943042 100644
--- a/tests/test_messages.py
+++ b/tests/test_messages.py
@@ -28,6 +28,7 @@
 
 import caosdb as db
 
+
 def test_messages_dict_behavior():
 
     from caosdb.common.models import Message, Messages
@@ -71,6 +72,7 @@ def test_messages_dict_behavior():
     msgs["HelloWorld"] = "Hello!"
     assert msgs["HelloWorld"] == "Hello!"
 
+
 def test_info():
     a = str(db.Info())
     assert a.startswith("Connection to")
diff --git a/tests/test_query.py b/tests/test_query.py
index c9a1fa6..81e1501 100644
--- a/tests/test_query.py
+++ b/tests/test_query.py
@@ -1411,3 +1411,43 @@ def test_query_paging():
         for entity in page:
             assert entity.description is not None
             # don't: entity.update()
+
+
+def test_greatest_smallest_id():
+    rt1 = db.RecordType("TestRT1").insert()
+    rt2 = db.RecordType("TestRT2").insert()
+
+    # assumptions
+    assert rt1.id < rt2.id
+
+    # actual testing
+    assert db.execute_query(
+        "FIND RECORDTYPE Test* WITH ID>99 AND THE SMALLEST ID",
+        unique=True).id == rt1.id
+    assert db.execute_query("FIND RECORDTYPE Test* WITH THE GREATEST ID", unique=True).id == rt2.id
+
+    assert db.execute_query("FIND ENTITY Test* WITH THE SMALLEST ID", unique=True).id == rt1.id
+    assert db.execute_query("FIND ENTITY Test* WITH THE GREATEST ID", unique=True).id == rt2.id
+
+
+@mark.xfail(reason="Issue: https://gitlab.com/linkahead/linkahead-server/-/issues/237")
+def test_greatest_smallest_id_over_roles():
+    rt1 = db.RecordType("TestRT1").insert()
+    rt2 = db.RecordType("TestRT2").insert()
+    p1 = db.Property("TestProp1", datatype=db.TEXT).insert()
+    p2 = db.Property("TestProp2", datatype=db.TEXT).insert()
+
+    # assumptions
+    assert rt1.id < rt2.id
+    assert rt2.id < p1.id
+    assert p1.id < p2.id
+
+    # actual testing
+    assert db.execute_query("FIND RECORDTYPE WITH THE SMALLEST ID", unique=True).id == rt1.id
+    assert db.execute_query("FIND RECORDTYPE WITH THE GREATEST ID", unique=True).id == rt2.id
+
+    assert db.execute_query("FIND PROPERTY WITH THE SMALLEST ID", unique=True).id == p1.id
+    assert db.execute_query("FIND PROPERTY WITH THE GREATEST ID", unique=True).id == p2.id
+
+    assert db.execute_query("FIND ENTITY WITH THE SMALLEST ID", unique=True).id == rt1.id
+    assert db.execute_query("FIND ENTITY WITH THE GREATEST ID", unique=True).id == p2.id
-- 
GitLab