Implement remaining test cases and add more of them
This commit is contained in:
parent
5c23e313e4
commit
2d2d21bab4
@ -49,10 +49,27 @@ def memgraph(**kwargs) -> Memgraph:
|
|||||||
def memgraph_with_text_indexed_data(**kwargs) -> Memgraph:
|
def memgraph_with_text_indexed_data(**kwargs) -> Memgraph:
|
||||||
memgraph = Memgraph()
|
memgraph = Memgraph()
|
||||||
|
|
||||||
memgraph.execute_and_fetch("CREATE TEXT INDEX complianceDocuments ON :Document;")
|
memgraph.execute("CREATE (:Document {title: 'Rules2024', version: 1});")
|
||||||
|
memgraph.execute("CREATE (:Document:Revision {title: 'Rules2024', version: 2});")
|
||||||
|
memgraph.execute("CREATE TEXT INDEX complianceDocuments ON :Document;")
|
||||||
|
|
||||||
yield memgraph
|
yield memgraph
|
||||||
|
|
||||||
memgraph.execute_and_fetch("DROP TEXT INDEX complianceDocuments;")
|
memgraph.execute("DROP TEXT INDEX complianceDocuments;")
|
||||||
|
memgraph.drop_database()
|
||||||
|
memgraph.drop_indexes()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def memgraph_with_text_indexed_data(**kwargs) -> Memgraph:
|
||||||
|
memgraph = Memgraph()
|
||||||
|
|
||||||
|
memgraph.execute("CREATE (:Document:Revision {title: 'Rules2024', version: 1});")
|
||||||
|
memgraph.execute("CREATE (:Revision {title: 'Rules2024', version: 2});")
|
||||||
|
memgraph.execute("CREATE TEXT INDEX complianceDocuments ON :Document;")
|
||||||
|
|
||||||
|
yield memgraph
|
||||||
|
|
||||||
|
memgraph.execute("DROP TEXT INDEX complianceDocuments;")
|
||||||
memgraph.drop_database()
|
memgraph.drop_database()
|
||||||
memgraph.drop_indexes()
|
memgraph.drop_indexes()
|
||||||
|
@ -11,51 +11,118 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import mgclient
|
||||||
import pytest
|
import pytest
|
||||||
from common import memgraph, memgraph_with_text_indexed_data
|
from common import memgraph, memgraph_with_mixed_data, memgraph_with_text_indexed_data
|
||||||
|
|
||||||
|
GET_RULES_2024_DOCUMENT = """CALL text_search.search('complianceDocuments', 'data.title:Rules2024') YIELD node
|
||||||
|
RETURN node.title AS title, node.version AS version
|
||||||
|
ORDER BY version ASC, title ASC;"""
|
||||||
|
|
||||||
|
|
||||||
def test_create_index(memgraph):
|
def test_create_index(memgraph):
|
||||||
memgraph.execute("CREATE TEXT INDEX complianceDocuments ON :Document;")
|
memgraph.execute("CREATE TEXT INDEX exampleIndex ON :Document;")
|
||||||
|
|
||||||
assert True
|
assert True
|
||||||
|
|
||||||
|
|
||||||
def test_drop_index(memgraph):
|
def test_drop_index(memgraph):
|
||||||
memgraph.execute("DROP TEXT INDEX complianceDocuments;")
|
memgraph.execute("DROP TEXT INDEX exampleIndex;")
|
||||||
assert True
|
assert True
|
||||||
|
|
||||||
|
|
||||||
def test_text_search_given_property(memgraph_with_text_indexed_data):
|
def test_text_search_given_property(memgraph_with_text_indexed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
result = list(memgraph_with_text_indexed_data.execute_and_fetch(GET_RULES_2024_DOCUMENT))
|
||||||
|
|
||||||
|
assert len(result) == 2 and result == [{"title": "Rules2024", "version": 1}, {"title": "Rules2024", "version": 2}]
|
||||||
|
|
||||||
|
|
||||||
def test_text_search_all_properties(memgraph_with_text_indexed_data):
|
def test_text_search_all_properties(memgraph_with_text_indexed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
result = list(
|
||||||
|
memgraph_with_text_indexed_data.execute_and_fetch(
|
||||||
|
"""CALL text_search.search('complianceDocuments', 'Rules2024') YIELD node
|
||||||
|
RETURN node.title AS title, node.version AS version
|
||||||
|
ORDER BY version ASC, title ASC;"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# assert len(result) == 2 and result == [{"title": "Rules2024", "version": 1}, {"title": "Rules2024", "version": 2}]
|
||||||
|
|
||||||
|
|
||||||
def test_create_indexed_node(memgraph_with_text_indexed_data):
|
def test_create_indexed_node(memgraph_with_text_indexed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
memgraph_with_text_indexed_data.execute("CREATE (:Document {title: 'Rules2024', version: 3});")
|
||||||
|
|
||||||
|
result = list(memgraph_with_text_indexed_data.execute_and_fetch(GET_RULES_2024_DOCUMENT))
|
||||||
|
|
||||||
|
assert len(result) == 3 and result == [
|
||||||
|
{"title": "Rules2024", "version": 1},
|
||||||
|
{"title": "Rules2024", "version": 2},
|
||||||
|
{"title": "Rules2024", "version": 3},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def test_delete_indexed_node(memgraph_with_text_indexed_data):
|
def test_delete_indexed_node(memgraph_with_text_indexed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
memgraph_with_text_indexed_data.execute("MATCH (n:Document {title: 'Rules2024', version: 2}) DETACH DELETE n;")
|
||||||
|
|
||||||
|
result = list(memgraph_with_text_indexed_data.execute_and_fetch(GET_RULES_2024_DOCUMENT))
|
||||||
|
|
||||||
|
assert len(result) == 1 and result == [{"title": "Rules2024", "version": 1}]
|
||||||
|
|
||||||
|
|
||||||
def test_add_indexed_label(memgraph_with_text_indexed_data):
|
def test_add_indexed_label(memgraph_with_mixed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
memgraph_with_mixed_data.execute("MATCH (n:Revision) SET n:Document;")
|
||||||
|
|
||||||
|
result = list(memgraph_with_mixed_data.execute_and_fetch(GET_RULES_2024_DOCUMENT))
|
||||||
|
|
||||||
|
assert len(result) == 2 and result == [{"title": "Rules2024", "version": 1}, {"title": "Rules2024", "version": 2}]
|
||||||
|
|
||||||
|
|
||||||
def test_remove_indexed_label(memgraph_with_text_indexed_data):
|
def test_remove_indexed_label(memgraph_with_mixed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
memgraph_with_mixed_data.execute("MATCH (n:Document {version: 1}) REMOVE n:Document;")
|
||||||
|
|
||||||
|
result = list(memgraph_with_mixed_data.execute_and_fetch(GET_RULES_2024_DOCUMENT))
|
||||||
|
|
||||||
|
assert len(result) == 0
|
||||||
|
|
||||||
|
|
||||||
def test_add_property_to_indexed_node(memgraph_with_text_indexed_data):
|
def test_add_text_property_to_indexed_node(memgraph_with_text_indexed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
try:
|
||||||
|
memgraph_with_text_indexed_data.execute("MATCH (n:Document {version:1}) SET n.author = 'Nenad Patel';")
|
||||||
|
except mgclient.DatabaseError:
|
||||||
|
assert True
|
||||||
|
|
||||||
|
assert False
|
||||||
|
|
||||||
|
|
||||||
def test_remove_property_from_indexed_node(memgraph_with_text_indexed_data):
|
def test_update_text_property_of_indexed_node(memgraph_with_text_indexed_data):
|
||||||
memgraph_with_text_indexed_data.execute_and_fetch("CALL text_search.search('complianceDocuments', 'b') YIELD *;")
|
memgraph_with_text_indexed_data.execute("MATCH (n:Document {version:1}) SET n.title = 'Rules2030';")
|
||||||
|
|
||||||
|
result = list(
|
||||||
|
memgraph_with_text_indexed_data.execute_and_fetch(
|
||||||
|
"""CALL text_search.search('complianceDocuments', 'data.title:Rules2030') YIELD node
|
||||||
|
RETURN node.title AS title, node.version AS version
|
||||||
|
ORDER BY version ASC, title ASC;"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assert len(result) == 1 and result == [{"title": "Rules2030", "version": 1}]
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_non_text_property_to_indexed_node(memgraph_with_text_indexed_data):
|
||||||
|
memgraph_with_text_indexed_data.execute("MATCH (n:Document {version:1}) SET n.wordcount = 1926;")
|
||||||
|
|
||||||
|
|
||||||
|
def test_remove_text_property_from_indexed_node(memgraph_with_text_indexed_data):
|
||||||
|
try:
|
||||||
|
memgraph_with_text_indexed_data.execute("MATCH (n:Document {version:1}) REMOVE n.title;")
|
||||||
|
except mgclient.DatabaseError:
|
||||||
|
assert True
|
||||||
|
|
||||||
|
assert False
|
||||||
|
|
||||||
|
|
||||||
|
def test_remove_non_text_property_from_indexed_node(memgraph_with_text_indexed_data):
|
||||||
|
memgraph_with_text_indexed_data.execute_and_fetch("MATCH (n:Document {version:1}) REMOVE n.version;")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user