diff --git a/tests/test_query_version.py b/tests/test_query_version.py
index 74101dba5250f46b6b087fb9de3cd89c5eb54fda..74c1d6f4a7dc3db1c4a305ab7c3517d1c562a4bb 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"
+