"""
Test script to verify Cypher query execution
"""
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
from src.db_utils import get_neo4j_driver
import json
def test_cypher_query(query):
"""Test function that mimics run_cypher_query"""
driver = get_neo4j_driver()
try:
with driver.session() as session:
result = session.run(query)
# Convert Neo4j records to standard dicts for JSON serialization
records = [dict(record) for record in result]
return records
except Exception as e:
return [{"error": f"Error executing Cypher: {str(e)}"}]
finally:
driver.close()
print("=" * 60)
print("Testing Cypher Query Execution")
print("=" * 60)
# Test 1: Get all Alpha Team members
print("\n1. Testing: Get ALL Alpha Team members")
query1 = "MATCH (e:Employee)-[:WORKS_IN]->(t:Team {name: 'Alpha Team'}) RETURN e.name AS name, e.email AS email"
result1 = test_cypher_query(query1)
print(f"Query: {query1}")
print(f"Result type: {type(result1)}")
print(f"Number of results: {len(result1)}")
print(f"Results:")
for i, record in enumerate(result1, 1):
print(f" {i}. {record}")
# Test 2: Get team lead
print("\n2. Testing: Get Delta Force team lead")
query2 = "MATCH (e:Employee)-[:LEADS]->(t:Team {name: 'Delta Force'}) RETURN e.name AS name, e.email AS email"
result2 = test_cypher_query(query2)
print(f"Query: {query2}")
print(f"Number of results: {len(result2)}")
print(f"Results: {result2}")
# Test 3: Test with LIMIT (to verify the issue)
print("\n3. Testing: Query with LIMIT 1 (should return only 1 result)")
query3 = "MATCH (e:Employee)-[:WORKS_IN]->(t:Team {name: 'Alpha Team'}) RETURN e.name AS name, e.email AS email LIMIT 1"
result3 = test_cypher_query(query3)
print(f"Query: {query3}")
print(f"Number of results: {len(result3)}")
print(f"Results: {result3}")
# Test 4: Get all teams
print("\n4. Testing: Get ALL teams")
query4 = "MATCH (t:Team) RETURN t.name AS team_name, t.team_size AS size"
result4 = test_cypher_query(query4)
print(f"Query: {query4}")
print(f"Number of results: {len(result4)}")
print(f"Results:")
for i, record in enumerate(result4, 1):
print(f" {i}. {record}")
print("\n" + "=" * 60)
print("Test completed!")
print("=" * 60)