Skip to content

Commit

Permalink
Added test with empty filter maps - small docs changes
Browse files Browse the repository at this point in the history
  • Loading branch information
vga91 committed Apr 3, 2024
1 parent 901f25e commit cf4ad36
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
label:function[] label:apoc-extended[]

[.emphasis]
apoc.graph.filterProperties(anyEntityObject, nodePropertiesToRemove, relPropertiesToRemove) - aggregation function which returns an object {node: [virtual nodes], relationships: [virtual relationships]} without the properties defined in nodePropertiesToRemove and relPropertiesToRemove
----
apoc.graph.filterProperties(anyEntityObject, nodePropertiesToRemove, relPropertiesToRemove)

Aggregation function which returns an object {node: [virtual nodes], relationships: [virtual relationships]} without the properties defined in nodePropertiesToRemove and relPropertiesToRemove
----

== Signature

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
label:procedure[] label:apoc-extended[]

[.emphasis]
CALL apoc.graph.filterProperties(anyEntityObject, nodePropertiesToRemove, relPropertiesToRemove) YIELD nodes, relationships - returns a set of virtual nodes and relationships without the properties defined in nodePropertiesToRemove and relPropertiesToRemove
----
CALL apoc.graph.filterProperties(anyEntityObject, nodePropertiesToRemove, relPropertiesToRemove) YIELD nodes, relationships

Returns a set of virtual nodes and relationships without the properties defined in nodePropertiesToRemove and relPropertiesToRemove
----

== Signature

Expand Down
48 changes: 48 additions & 0 deletions extended/src/test/java/apoc/graph/GraphsExtendedTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,26 @@ with collect(path) as paths
});
}

@Test
public void testFilterPropertiesWithEmptyNodeAndRelPropertiesToRemove() {
testCall(db, """
MATCH path=(:Person)-[:REL]->(:Movie)
WITH collect(path) AS paths
CALL apoc.graph.filterProperties(paths)
YIELD nodes, relationships
RETURN nodes, relationships""",
this::assertEmptyFilter);

testCall(db, """
MATCH path=(:Person)-[:REL]->(:Movie)
WITH apoc.graph.filterProperties(path) as graph
RETURN graph.nodes AS nodes, graph.relationships AS relationships""",
this::assertEmptyFilter);
}

@Test
public void testFilterPropertiesProcedure() {

testCall(db, """
MATCH path=(:Person)-[:REL]->(:Movie)
WITH collect(path) AS paths
Expand All @@ -131,6 +149,36 @@ WITH collect(path) AS paths
this::commonFilterPropertiesAssertions);
}

private void assertEmptyFilter(Map<String, Object> r) {
List<Node> nodes = (List<Node>) r.get("nodes");
nodes.sort(Comparator.comparingLong(i -> (long) i.getProperty("idNode")));
assertEquals(4, nodes.size());

Node node = nodes.get(0);
assertEquals(List.of(Label.label("Person")), node.getLabels());
assertEquals(propsPerson1, node.getAllProperties());
node = nodes.get(1);
assertEquals(List.of(Label.label("Movie")), node.getLabels());
assertEquals(propsMovie1, node.getAllProperties());
node = nodes.get(2);
assertEquals(List.of(Label.label("Person")), node.getLabels());
assertEquals(propsPerson2, node.getAllProperties());
node = nodes.get(3);
assertEquals(List.of(Label.label("Movie")), node.getLabels());
assertEquals(propsMovie2, node.getAllProperties());

List<Relationship> relationships = (List<Relationship>) r.get("relationships");
relationships.sort(Comparator.comparingLong(i -> (long) i.getProperty("idRel")));
assertEquals(2, relationships.size());

Relationship rel = relationships.get(0);
assertEquals(RelationshipType.withName("REL"), rel.getType());
assertEquals(propsRel1, rel.getAllProperties());
rel = relationships.get(1);
assertEquals(RelationshipType.withName("REL"), rel.getType());
assertEquals(propsRel2, rel.getAllProperties());
}

private void commonFilterPropertiesAssertions(Map<String, Object> r) {
List<Node> nodes = (List<Node>) r.get("nodes");
nodes.sort(Comparator.comparingLong(i -> (long) i.getProperty("idNode")));
Expand Down

0 comments on commit cf4ad36

Please sign in to comment.