Skip to content

Commit c86c2cc

Browse files
committed
Fixing test for queries
1 parent 8971800 commit c86c2cc

1 file changed

Lines changed: 164 additions & 0 deletions

File tree

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
package org.gephi.plugins.neo4j.importer;
2+
3+
import org.gephi.io.importer.api.Report;
4+
import org.gephi.io.importer.impl.ImportContainerImpl;
5+
import org.gephi.plugins.neo4j.AbstractNeo4jIntegrationTest;
6+
import org.junit.BeforeClass;
7+
import org.junit.Test;
8+
import org.neo4j.driver.Result;
9+
import org.neo4j.driver.Session;
10+
11+
import java.util.Arrays;
12+
13+
import static org.junit.Assert.assertEquals;
14+
15+
public class Neo4jDatabaseImporterTest extends AbstractNeo4jIntegrationTest {
16+
17+
@BeforeClass
18+
public static void before() {
19+
Neo4jDatabaseImporterTest.loadFile("/cypher/movie.cyp");
20+
}
21+
22+
@Test
23+
public void import_full_database_should_work() {
24+
ImportContainerImpl container = new ImportContainerImpl();
25+
26+
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
27+
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
28+
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
29+
importer.execute(container.getLoader());
30+
31+
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
32+
long nbNodes = session.readTransaction(tx -> {
33+
Result rs = tx.run("MATCH (n) RETURN count(n)");
34+
return rs.next().get(0).asLong();
35+
});
36+
long nbEdges = session.readTransaction(tx -> {
37+
Result rs = tx.run("MATCH ()-[r]->() RETURN count(r)");
38+
return rs.next().get(0).asLong();
39+
});
40+
41+
assertEquals("Bad node size", nbNodes, container.getNodeCount());
42+
assertEquals("Bad edge size", nbEdges, container.getEdgeCount());
43+
44+
this.logReport(importer.getReport());
45+
}
46+
}
47+
48+
@Test
49+
public void import_by_node_and_edge_types_should_work() {
50+
ImportContainerImpl container = new ImportContainerImpl();
51+
52+
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
53+
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
54+
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
55+
importer.setLabels(Arrays.asList("Person"));
56+
importer.setRelationshipTypes(Arrays.asList("FOLLOWS"));
57+
importer.execute(container.getLoader());
58+
59+
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
60+
long nbNodes = session.readTransaction(tx -> {
61+
Result rs = tx.run("MATCH (n:Person) RETURN count(n)");
62+
return rs.next().get(0).asLong();
63+
});
64+
long nbEdges = session.readTransaction(tx -> {
65+
Result rs = tx.run("MATCH (:Person)-[r:FOLLOWS]->(:Person) RETURN count(r)");
66+
return rs.next().get(0).asLong();
67+
});
68+
69+
assertEquals("Bad node size", nbNodes, container.getNodeCount());
70+
assertEquals("Bad edge size", nbEdges, container.getEdgeCount());
71+
72+
this.logReport(importer.getReport());
73+
}
74+
}
75+
76+
@Test
77+
public void import_by_node_types_should_work() {
78+
ImportContainerImpl container = new ImportContainerImpl();
79+
80+
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
81+
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
82+
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
83+
importer.setLabels(Arrays.asList("Person"));
84+
importer.execute(container.getLoader());
85+
86+
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
87+
long nbNodes = session.readTransaction(tx -> {
88+
Result rs = tx.run("MATCH (n:Person) RETURN count(n)");
89+
return rs.next().get(0).asLong();
90+
});
91+
long nbEdges = session.readTransaction(tx -> {
92+
Result rs = tx.run("MATCH (:Person)-[r]->(:Person) RETURN count(r)");
93+
return rs.next().get(0).asLong();
94+
});
95+
96+
assertEquals("Bad node size", nbNodes, container.getNodeCount());
97+
assertEquals("Bad edge size", nbEdges, container.getEdgeCount());
98+
99+
this.logReport(importer.getReport());
100+
}
101+
}
102+
103+
@Test
104+
public void import_by_edge_types_should_work() {
105+
ImportContainerImpl container = new ImportContainerImpl();
106+
107+
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
108+
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
109+
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
110+
importer.setRelationshipTypes(Arrays.asList("FOLLOWS"));
111+
importer.execute(container.getLoader());
112+
113+
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
114+
long nbNodes = session.readTransaction(tx -> {
115+
Result rs = tx.run("MATCH (n) RETURN count(n)");
116+
return rs.next().get(0).asLong();
117+
});
118+
long nbEdges = session.readTransaction(tx -> {
119+
Result rs = tx.run("MATCH ()-[r:FOLLOWS]->() RETURN count(r)");
120+
return rs.next().get(0).asLong();
121+
});
122+
123+
assertEquals("Bad node size", nbNodes, container.getNodeCount());
124+
assertEquals("Bad edge size", nbEdges, container.getEdgeCount());
125+
126+
this.logReport(importer.getReport());
127+
}
128+
}
129+
130+
@Test
131+
public void import_by_nodes_and_edge_queries_should_work() {
132+
ImportContainerImpl container = new ImportContainerImpl();
133+
System.out.println(container.getNodeCount());
134+
135+
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
136+
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
137+
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
138+
importer.setNodeQuery("MATCH (n:Person) RETURN id(n) AS id, n.name AS label");
139+
importer.setEdgeQuery("MATCH (p1:Person)-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(p2:Person) WHERE id(p1) < id(p2) RETURN id(p1) + '-' + id(p2) AS id, id(p1) AS sourceId, id(p2) AS targetId, count(m) AS weight");
140+
importer.execute(container.getLoader());
141+
142+
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
143+
long nbNodes = session.readTransaction(tx -> {
144+
Result rs = tx.run("MATCH (n:Person) RETURN count(n)");
145+
return rs.next().get(0).asLong();
146+
});
147+
long nbEdges = session.readTransaction(tx -> {
148+
Result rs = tx.run("MATCH (p1:Person)-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(p2:Person) WHERE id(p1) < id(p2) WITH DISTINCT p1, p2 RETURN count(*)");
149+
return rs.next().get(0).asLong();
150+
});
151+
152+
assertEquals("Bad node size", nbNodes, container.getNodeCount());
153+
assertEquals("Bad edge size", nbEdges, container.getEdgeCount());
154+
155+
this.logReport(importer.getReport());
156+
}
157+
}
158+
159+
private void logReport(Report report) {
160+
System.out.println(report.getText());
161+
report.getIssues(100).forEachRemaining(i -> System.out.println(i.getMessage()));
162+
}
163+
164+
}

0 commit comments

Comments
 (0)