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" +