From 51abc0e2c6cc8645b0f70e8d976c18a674a569e1 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 9 Nov 2020 17:36:44 +0100
Subject: [PATCH] WIP: tests for versioned queries

---
 tests/test_query_version.py | 90 +++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/tests/test_query_version.py b/tests/test_query_version.py
index 74101db..74c1d6f 100644
--- a/tests/test_query_version.py
+++ b/tests/test_query_version.py
@@ -160,6 +160,21 @@ def test_normal_find_record():
         "FIND RECORD TestRecord1 WITH TestRefRecordType -> TestRef1")
     assert len(result) == 0
 
+    result = query("FIND RECORD WITH TestRefRecordType AND TestPropertyText")
+    assert len(result) == 1
+    assert result[0].description == "v3"
+
+    result = query("FIND RECORD TestRefRecordType WITH NOT TestPropertyText")
+    assert len(result) == 3
+    assert set(["ref1", "ref2", "ref3"]) == set([r.description for r in result])
+
+    result = query("FIND RECORD TestRecord1 WITH NOT TestPropertyText")
+    assert len(result) == 0
+
+    result = query("FIND RECORD WITH NOT TestPropertyText")
+    assert len(result) == 3
+    assert set(["ref1", "ref2", "ref3"]) == set([r.description for r in result])
+
 
 def test_find_any_version_of_record():
     result = query("FIND ANY VERSION OF RECORD")
@@ -358,3 +373,78 @@ def test_find_any_version_of_record_with_simple_reference_filter():
         "FIND ANY VERSION OF RECORD WITH TestRefRecordType -> TestRef1")
     assert len(result) == 1
     assert result[0].description == "v1"
+
+
+def test_find_any_version_of_record_with_conjunction_filter():
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType AND TestPropertyText")
+    assert len(result) == 3
+    assert set(["v3", "v2", "v1"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef3 AND TestPropertyText")
+    assert len(result) == 1
+    assert result[0].description == "v3"
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef3 AND TestPropertyText = val3")
+    assert len(result) == 1
+    assert result[0].description == "v3"
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef2 AND TestPropertyText = val2")
+    assert len(result) == 1
+    assert result[0].description == "v2"
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef3 AND TestPropertyText = val2")
+    assert len(result) == 0
+
+
+def test_find_any_version_of_record_with_disjunction_filter():
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType OR TestPropertyText")
+    assert len(result) == 3
+    assert set(["v3", "v2", "v1"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef3 OR TestPropertyText")
+    assert len(result) == 3
+    assert set(["v3", "v2", "v1"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef2 OR TestPropertyText")
+    assert len(result) == 3
+    assert set(["v3", "v2", "v1"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef3 OR TestPropertyText = val3")
+    assert len(result) == 1
+    assert result[0].description == "v3"
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef2 OR TestPropertyText = val2")
+    assert len(result) == 1
+    assert result[0].description == "v2"
+
+    result = query("FIND ANY VERSION OF TestRecord1  WITH TestRefRecordType = TestRef2 OR TestPropertyText = val2")
+    assert len(result) == 1
+    assert result[0].description == "v2"
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef2 OR TestPropertyText = val3")
+    assert len(result) == 2
+    assert set(["v3", "v2"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD WITH TestRefRecordType = TestRef2 OR TestPropertyText = val3 OR TestPropertyInteger = 200")
+    assert len(result) == 2
+    assert set(["v3", "v2"]) == set([r.description for r in result])
+
+
+def test_find_any_version_of_record_with_negation_filter():
+    result = query("FIND ANY VERSION OF RECORD WHICH DOES NOT HAVE A TestPropertyText")
+    assert len(result) == 3
+    assert set(["ref1", "ref2", "ref3"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD WHICH DOES NOT HAVE A TestPropertyText=val2")
+    assert len(result) == 5
+    assert set(["ref1", "ref2", "ref3", "v1", "v3"]) == set([r.description for r in result])
+
+    result = query("FIND ANY VERSION OF RECORD TestRecord1 WHICH DOES NOT HAVE A TestPropertyText=val2")
+    assert len(result) == 2
+    assert set(["v1", "v3"]) == set([r.description for r in result])
+
+def test_find_any_version_of_record_with_complex_filter():
+    result = query("FIND ANY VERSION OF RECORD WITH TestPropertyText=val2 OR (TestPropertyInteger=200 AND NOT TestPropertyInteger=400 AND TestRefRecordType = TestRef2)")
+    assert len(result) == 1
+    assert result[0].description == "v2"
+
-- 
GitLab