chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
"""Integration test for push_to_falkordb against a real FalkorDB instance.
|
||||
|
||||
Runs for real against `falkordb/falkordb:latest`:
|
||||
|
||||
docker run -d -p 6379:6379 falkordb/falkordb:latest
|
||||
uv run pytest tests/test_falkordb_integration.py -q
|
||||
|
||||
The test auto-skips when the `falkordb` SDK is not installed or no FalkorDB is
|
||||
reachable, so it is a no-op in the default CI (which runs no external services).
|
||||
Host/port are overridable via FALKORDB_HOST / FALKORDB_PORT.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
falkordb = pytest.importorskip("falkordb")
|
||||
|
||||
FIXTURES = Path(__file__).parent / "fixtures"
|
||||
HOST = os.environ.get("FALKORDB_HOST", "localhost")
|
||||
PORT = int(os.environ.get("FALKORDB_PORT", "6379"))
|
||||
GRAPH_NAME = "graphify_test"
|
||||
|
||||
|
||||
def _connect():
|
||||
"""Return a connected FalkorDB client, or skip if none is reachable."""
|
||||
try:
|
||||
db = falkordb.FalkorDB(host=HOST, port=PORT)
|
||||
db.connection.ping()
|
||||
return db
|
||||
except Exception as e: # pragma: no cover - depends on local environment
|
||||
pytest.skip(f"no FalkorDB reachable at {HOST}:{PORT} ({e})")
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def db():
|
||||
client = _connect()
|
||||
# Start from a clean slate and clean up afterwards.
|
||||
try:
|
||||
client.select_graph(GRAPH_NAME).delete()
|
||||
except Exception:
|
||||
pass
|
||||
yield client
|
||||
try:
|
||||
client.select_graph(GRAPH_NAME).delete()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def test_push_to_falkordb_creates_expected_graph(db):
|
||||
from graphify.build import build_from_json
|
||||
from graphify.export import push_to_falkordb
|
||||
|
||||
extraction = json.loads((FIXTURES / "extraction.json").read_text())
|
||||
G = build_from_json(extraction)
|
||||
|
||||
result = push_to_falkordb(
|
||||
G, uri=f"{HOST}:{PORT}", graph_name=GRAPH_NAME
|
||||
)
|
||||
|
||||
assert result["nodes"] == G.number_of_nodes()
|
||||
assert result["edges"] == G.number_of_edges()
|
||||
|
||||
graph = db.select_graph(GRAPH_NAME)
|
||||
node_count = graph.query("MATCH (n) RETURN count(n)").result_set[0][0]
|
||||
edge_count = graph.query("MATCH ()-[r]->() RETURN count(r)").result_set[0][0]
|
||||
|
||||
assert node_count == G.number_of_nodes()
|
||||
assert edge_count == G.number_of_edges()
|
||||
|
||||
|
||||
def test_push_to_falkordb_is_idempotent(db):
|
||||
"""MERGE-based push is safe to re-run - counts must not grow."""
|
||||
from graphify.build import build_from_json
|
||||
from graphify.export import push_to_falkordb
|
||||
|
||||
extraction = json.loads((FIXTURES / "extraction.json").read_text())
|
||||
G = build_from_json(extraction)
|
||||
|
||||
push_to_falkordb(G, uri=f"{HOST}:{PORT}", graph_name=GRAPH_NAME)
|
||||
push_to_falkordb(G, uri=f"{HOST}:{PORT}", graph_name=GRAPH_NAME)
|
||||
|
||||
graph = db.select_graph(GRAPH_NAME)
|
||||
node_count = graph.query("MATCH (n) RETURN count(n)").result_set[0][0]
|
||||
edge_count = graph.query("MATCH ()-[r]->() RETURN count(r)").result_set[0][0]
|
||||
|
||||
assert node_count == G.number_of_nodes()
|
||||
assert edge_count == G.number_of_edges()
|
||||
Reference in New Issue
Block a user