From 3e317c969a90d0f18f08cf65733cef3e287482b8 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Fri, 14 Apr 2023 13:08:55 +0200
Subject: [PATCH] TST: test errors for caosdb-server#143

---
 tests/test_issues_server.py | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index 6e1286d..2f0e17e 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -1262,12 +1262,32 @@ def test_143(num):
     db.Property(name="scientific_notation", datatype=db.DOUBLE).insert()
     db.RecordType(name="RT1").add_property("scientific_notation", value=num).insert()
 
-    db.execute_query(f"FIND RECORDTYPE RT1 WITH scientific_notation={num}", unique=True)
-    db.execute_query(f"FIND RECORDTYPE RT1 WITH scientific_notation='{num}'", unique=True)
-    db.execute_query(f"FIND RECORDTYPE RT1 WITH scientific_notation=\"{num}\"", unique=True)
-    db.execute_query(f"FIND RECORDTYPE RT1 WITH scientific_notation = {num}", unique=True)
-    db.execute_query(f"FIND RECORDTYPE RT1 WITH scientific_notation = '{num}'", unique=True)
-    db.execute_query(f"FIND RECORDTYPE RT1 WITH scientific_notation = \"{num}\"", unique=True)
+    for query in [
+        f"FIND RECORDTYPE RT1 WITH scientific_notation={num}",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation='{num}'",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation=\"{num}\"",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation = {num}",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation = '{num}'",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation = \"{num}\""
+    ]:
+        db.execute_query(query, unique=True)
+
+
+@pytest.mark.parametrize("num", ["1 e+23", "- 5e22", "2e -323", "2E- 323", "5 E 22", "1 E+ 23"])
+def test_143_white_space(num):
+    """https://gitlab.com/caosdb/caosdb-server/-/issues/144"""
+
+    for query in [
+        f"FIND RECORDTYPE RT1 WITH scientific_notation={num}",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation='{num}'",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation=\"{num}\"",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation = {num}",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation = '{num}'",
+        f"FIND RECORDTYPE RT1 WITH scientific_notation = \"{num}\""
+    ]:
+        with pytest.raises(TransactionError) as cm:
+            db.execute_query(query)
+        assert cm.value.msg == f'You typed "{num}". Empty spaces are not allowed in numbers. Did you mean "{num.replace(" ", "")}"?'
 
 
 def test_144():
-- 
GitLab