diff --git a/tests/unit/test_neo4j_queries.py b/tests/unit/test_neo4j_queries.py index 45f778a9..1e14f432 100644 --- a/tests/unit/test_neo4j_queries.py +++ b/tests/unit/test_neo4j_queries.py @@ -15,8 +15,9 @@ from typing import Any from unittest.mock import patch +import pytest from neo4j_graphrag.neo4j_queries import get_query_tail, get_search_query -from neo4j_graphrag.types import SearchType +from neo4j_graphrag.types import IndexType, SearchType def test_vector_search_basic() -> None: @@ -31,6 +32,34 @@ def test_vector_search_basic() -> None: assert params == {} +def test_rel_vector_search_basic() -> None: + expected = ( + "CALL db.index.vector.queryRelationships($vector_index_name, $top_k * $effective_search_ratio, $query_vector) " + "YIELD relationship, score " + "WITH relationship, score LIMIT $top_k " + "RETURN relationship { .*, `None`: null } AS relationship, elementId(relationship) AS elementId, score" + ) + result, params = get_search_query(SearchType.VECTOR, IndexType.RELATIONSHIP) + assert result.strip() == expected.strip() + assert params == {} + + +def test_rel_vector_search_filters_err() -> None: + with pytest.raises(Exception) as exc_info: + get_search_query( + SearchType.VECTOR, IndexType.RELATIONSHIP, filters={"filter": None} + ) + assert str(exc_info.value) == "Filters are not supported for relationship indexes" + + +def test_rel_vector_search_hybrid_err() -> None: + with pytest.raises(Exception) as exc_info: + get_search_query(SearchType.HYBRID, IndexType.RELATIONSHIP) + assert ( + str(exc_info.value) == "Hybrid search is not supported for relationship indexes" + ) + + def test_hybrid_search_basic() -> None: expected = ( "CALL { "