Skip to content

Commit 13a89e6

Browse files
Add unit tests
1 parent 997018e commit 13a89e6

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

tests/unit/experimental/components/test_resolver.py

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import pytest
1919
from neo4j_graphrag.experimental.components.resolver import (
2020
SinglePropertyExactMatchResolver,
21+
SpaCySemanticMatchResolver,
2122
)
2223
from neo4j_graphrag.experimental.components.types import ResolutionStats
2324

@@ -57,3 +58,112 @@ async def test_simple_resolver_custom_filter(driver: MagicMock) -> None:
5758
)
5859
]
5960
)
61+
62+
63+
@pytest.mark.asyncio
64+
async def test_spacy_resolver_match_on_name_property(driver: MagicMock) -> None:
65+
driver.execute_query.side_effect = [
66+
(
67+
[
68+
neo4j.Record(
69+
{
70+
"lab": "Person",
71+
"labelCluster": [
72+
{"id": 1, "name": "Alice"},
73+
{"id": 2, "name": "Alice"}
74+
],
75+
}
76+
)
77+
],
78+
None,
79+
None,
80+
),
81+
(
82+
[neo4j.Record({"id(node)": 1})],
83+
None,
84+
None,
85+
),
86+
]
87+
88+
resolver = SpaCySemanticMatchResolver(driver=driver)
89+
90+
res = await resolver.run()
91+
assert isinstance(res, ResolutionStats)
92+
assert res.number_of_nodes_to_resolve == 2
93+
assert res.number_of_created_nodes == 1
94+
95+
assert driver.execute_query.call_count == 2
96+
97+
@pytest.mark.asyncio
98+
async def test_spacy_resolver_no_merge(driver: MagicMock) -> None:
99+
driver.execute_query.side_effect = [
100+
(
101+
[
102+
neo4j.Record(
103+
{
104+
"lab": "Person",
105+
"labelCluster": [
106+
{"id": 1, "name": "Alice"},
107+
{"id": 2, "name": "Bob"}
108+
],
109+
}
110+
)
111+
],
112+
None,
113+
None,
114+
),
115+
]
116+
117+
resolver = SpaCySemanticMatchResolver(driver=driver)
118+
119+
res = await resolver.run()
120+
assert res.number_of_nodes_to_resolve == 2
121+
assert res.number_of_created_nodes == 0
122+
123+
assert driver.execute_query.call_count == 1
124+
125+
@pytest.mark.asyncio
126+
async def test_spacy_resolver_match_on_multiple_text_properties(
127+
driver: MagicMock
128+
) -> None:
129+
driver.execute_query.side_effect = [
130+
(
131+
[
132+
neo4j.Record(
133+
{
134+
"lab": "Person",
135+
"labelCluster": [
136+
{
137+
"id": 10,
138+
"name": "John Smith",
139+
"ssn": "23-45-6789"
140+
},
141+
{
142+
"id": 11,
143+
"name": "Jonathan Smith",
144+
"ssn": "23-45-6789"
145+
}
146+
],
147+
}
148+
)
149+
],
150+
None,
151+
None,
152+
),
153+
(
154+
[neo4j.Record({"id(node)": 10})],
155+
None,
156+
None,
157+
),
158+
]
159+
160+
resolver = SpaCySemanticMatchResolver(
161+
driver=driver,
162+
resolve_properties=["name", "ssn"]
163+
)
164+
res = await resolver.run()
165+
assert isinstance(res, ResolutionStats)
166+
assert res.number_of_nodes_to_resolve == 2
167+
assert res.number_of_created_nodes == 1
168+
169+
assert driver.execute_query.call_count == 2

0 commit comments

Comments
 (0)