From c1b70f544880e5e9cd9bcfe8de21189ce84635d2 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 13 Feb 2020 15:35:20 +0100
Subject: [PATCH] WIP: tests for empty and null values

---
 tests/test_empty_text_value.py | 78 +++++++++++++++++++++++++++-------
 1 file changed, 63 insertions(+), 15 deletions(-)

diff --git a/tests/test_empty_text_value.py b/tests/test_empty_text_value.py
index 19cdfab..9df0651 100644
--- a/tests/test_empty_text_value.py
+++ b/tests/test_empty_text_value.py
@@ -20,15 +20,15 @@
 #
 
 import pytest
-from nose.tools import assert_equals, with_setup
 
 import caosdb as db
 
 
 def setup():
-    rt = db.RecordType("Test")
+    teardown()
+    rt = db.RecordType("TestRT")
     rt.insert()
-    p = db.Property("te", datatype=db.TEXT)
+    p = db.Property("TestProp", datatype=db.TEXT)
     p.insert()
 
 
@@ -37,24 +37,72 @@ def teardown():
         db.execute_query("FIND Test*").delete()
     except Exception as e:
         print(e)
-    try:
-        db.execute_query("FIND te").delete()
-    except Exception as e:
-        print(e)
 
 
-@pytest.mark.skip(reason="this is the confirmation for https://gitlab.com/caosdb/caosdb-server/issues/33")
-@with_setup(setup, teardown)
 def test_empty_string():
     r = db.Record()
-    r.add_parent("Test")
-    r.add_property("te", value="leer")
+    r.add_parent("TestRT")
+    r.add_property("TestProp", value="leer")
+    r.insert()
+    assert db.execute_query("FIND TestRT with TestProp='leer'", unique=True).id == r.id
+    r.delete()
+    r = db.Record()
+    r.add_parent("TestRT")
+    r.add_property("TestProp", value="")
+    r.insert()
+    assert db.execute_query("FIND Record TestRT", unique=True).value == ""
+    # assert db.execute_query("FIND TestRT with TestProp=''", unique=True).id == r.id
+    r.delete()
+
+def test_null_value():
+    r = db.Record()
+    r.add_parent("TestRT")
+    r.add_property("TestProp", value="null")
+    r.insert()
+    assert db.execute_query("FIND TestRT with TestProp='null'", unique=True).id == r.id
+    r.delete()
+    r = db.Record()
+    r.add_parent("TestRT")
+    r.add_property("TestProp", value=None)
     r.insert()
-    assert_equals(db.execute_query("FIND Test with te='leer'")[0].id, r.id)
+    assert db.execute_query("FIND Record TestRT", unique=True).value == None
+    # assert db.execute_query("FIND TestRT WHERE TestProp IS NULL", unique=True).id == r.id
     r.delete()
+
+
+def test_list_with_empty_string():
     r = db.Record()
-    r.add_parent("Test")
-    r.add_property("te", value="")
+    r.add_parent("TestRT")
+    r.add_property("TestProp", datatype=db.LIST(db.TEXT), value=["leer"])
     r.insert()
-    assert_equals(db.execute_query("FIND Test with te=''")[0].id, r.id)
+    assert len(db.execute_query("FIND Record TestRT", unique=True).value) == 1
+    assert db.execute_query("FIND Record TestRT", unique=True).value[0] == "leer"
+    # assert db.execute_query("FIND TestRT with TestProp='leer'", unique=True).id == r.id
     r.delete()
+    r = db.Record()
+    r.add_parent("TestRT")
+    r.add_property("TestProp", datatype=db.LIST(db.TEXT), value=[""])
+    r.insert()
+    assert len(db.execute_query("FIND Record TestRT", unique=True).value) == 1
+    assert db.execute_query("FIND Record TestRT", unique=True).value[0] == ""
+    # assert db.execute_query("FIND TestRT with TestProp=''", unique=True).id == r.id
+    r.delete()
+
+def test_list_with_null_value():
+    r = db.Record()
+    r.add_parent("TestRT")
+    r.add_property("TestProp", datatype=db.LIST(db.TEXT), value=["null"])
+    r.insert()
+    assert len(db.execute_query("FIND Record TestRT", unique=True).value) == 1
+    assert db.execute_query("FIND Record TestRT", unique=True).value[0] == "null"
+    assert db.execute_query("FIND TestRT with TestProp='null'", unique=True).id == r.id
+    r.delete()
+    r = db.Record()
+    r.add_parent("TestRT")
+    r.add_property("TestProp", datatype=db.LIST(db.TEXT), value=[None])
+    r.insert()
+    assert len(db.execute_query("FIND Record TestRT", unique=True).value) == 1
+    assert db.execute_query("FIND Record TestRT", unique=True).value[0] == None
+    # assert db.execute_query("FIND TestRT WHERE TestProp IS NULL", unique=True).id == r.id
+    r.delete()
+
-- 
GitLab