use of org.neo4j.test.GraphDescription.Graph in project neo4j-documentation by neo4j.
the class CypherDocIT method return_paths.
@Test
@Title("Return paths")
@Documented("Paths can be returned just like other return types.")
@Graph("I know you")
public void return_paths() throws Exception {
String script = "MATCH path = (x {name: 'I'})--(friend) RETURN path, friend.name";
String response = cypherRestCall(script, Status.OK);
assertEquals(2, (jsonToMap(response)).size());
assertThat(response, containsString("data"));
assertThat(response, containsString("you"));
}
use of org.neo4j.test.GraphDescription.Graph in project neo4j-documentation by neo4j.
the class TraversalDocTest method how_to_use_the_Traversal_framework.
@Test
@Documented(TRAVERSAL_DOC)
@Graph({ "Joe KNOWS Sara", "Lisa LIKES Joe", "Peter KNOWS Sara", "Dirk KNOWS Peter", "Lars KNOWS Dirk", "Ed KNOWS Lars", "Lisa KNOWS Lars" })
public void how_to_use_the_Traversal_framework() {
Node joe = data.get().get("Joe");
TraversalExample example = new TraversalExample(db);
gen.get().addSnippet("graph", createGraphVizWithNodeId("Traversal Example Graph", graphdb(), gen.get().getTitle()));
try (Transaction tx = db.beginTx()) {
String output = example.knowsLikesTraverser(joe);
gen.get().addSnippet("knowslikesoutput", createOutputSnippet(output));
output = example.traverseBaseTraverser(joe);
gen.get().addSnippet("baseoutput", createOutputSnippet(output));
output = example.depth3(joe);
gen.get().addSnippet("output3", createOutputSnippet(output));
output = example.depth4(joe);
gen.get().addSnippet("output4", createOutputSnippet(output));
output = example.nodes(joe);
gen.get().addSnippet("nodeoutput", createOutputSnippet(output));
output = example.relationships(joe);
gen.get().addSnippet("relationshipoutput", createOutputSnippet(output));
gen.get().addSourceSnippets(example.getClass(), "knowslikestraverser", "sourceRels", "basetraverser", "depth3", "depth4", "nodes", "relationships");
gen.get().addGithubSourceLink("github", example.getClass(), "community/embedded-examples");
}
}
use of org.neo4j.test.GraphDescription.Graph in project neo4j-documentation by neo4j.
the class TraverserDocIT method shouldAllowTypeOrderedTraversals.
@Test
@Graph({ "Root knows Mattias", "Root knows Johan", "Johan knows Emil", "Emil knows Peter", "Root eats Cork", "Cork hates Root", "Root likes Banana", "Banana is_a Fruit" })
public void shouldAllowTypeOrderedTraversals() throws JsonParseException {
Node start = getNode("Root");
String description = createJsonFrom(map("expander", "order_by_type", "relationships", new Map[] { map("type", "eats"), map("type", "knows"), map("type", "likes") }, "prune_evaluator", map("language", "builtin", "name", "none"), "return_filter", map("language", "javascript", "body", "position.length()<2;")));
@SuppressWarnings("unchecked") List<Map<String, Object>> nodes = (List<Map<String, Object>>) readJson(gen().expectedStatus(200).payload(description).post(getTraverseUriNodes(start)).entity());
assertThat(nodes.size(), is(5));
assertThat(getName(nodes.get(0)), is("Root"));
assertThat(getName(nodes.get(1)), is("Cork"));
// We don't really care about the ordering between Johan and Mattias, we just assert that they
// both are there, in between Root/Cork and Banana
Set<String> knowsNodes = new HashSet<>(Arrays.asList("Johan", "Mattias"));
assertTrue(knowsNodes.remove(getName(nodes.get(2))));
assertTrue(knowsNodes.remove(getName(nodes.get(3))));
assertThat(getName(nodes.get(4)), is("Banana"));
}
use of org.neo4j.test.GraphDescription.Graph in project neo4j-documentation by neo4j.
the class StreamingBatchOperationDocIT method execute_multiple_operations_in_batch_streaming.
/**
* By specifying an extended header attribute in the HTTP request,
* the server will stream the results back as soon as they are processed on the server side
* instead of constructing a full response when all entities are processed.
*/
@SuppressWarnings("unchecked")
@Test
@Graph("Joe knows John")
public void execute_multiple_operations_in_batch_streaming() throws Exception {
long idJoe = data.get().get("Joe").getId();
String jsonString = new PrettyJSON().array().object().key("method").value("PUT").key("to").value("/node/" + idJoe + "/properties").key("body").object().key("age").value(1).endObject().key("id").value(0).endObject().object().key("method").value("GET").key("to").value("/node/" + idJoe).key("id").value(1).endObject().object().key("method").value("POST").key("to").value("/node").key("body").object().key("age").value(1).endObject().key("id").value(2).endObject().object().key("method").value("POST").key("to").value("/node").key("body").object().key("age").value(1).endObject().key("id").value(3).endObject().endArray().toString();
String entity = gen.get().expectedType(APPLICATION_JSON_TYPE).withHeader(StreamingFormat.STREAM_HEADER, "true").payload(jsonString).expectedStatus(200).post(batchUri()).entity();
List<Map<String, Object>> results = JsonHelper.jsonToList(entity);
assertEquals(4, results.size());
Map<String, Object> putResult = results.get(0);
Map<String, Object> getResult = results.get(1);
Map<String, Object> firstPostResult = results.get(2);
Map<String, Object> secondPostResult = results.get(3);
// Ids should be ok
assertEquals(0, putResult.get("id"));
assertEquals(2, firstPostResult.get("id"));
assertEquals(3, secondPostResult.get("id"));
// Should contain "from"
assertEquals("/node/" + idJoe + "/properties", putResult.get("from"));
assertEquals("/node/" + idJoe, getResult.get("from"));
assertEquals("/node", firstPostResult.get("from"));
assertEquals("/node", secondPostResult.get("from"));
// Post should contain location
assertTrue(((String) firstPostResult.get("location")).length() > 0);
assertTrue(((String) secondPostResult.get("location")).length() > 0);
// Should have created by the first PUT request
Map<String, Object> body = (Map<String, Object>) getResult.get("body");
assertEquals(1, ((Map<String, Object>) body.get("data")).get("age"));
}
use of org.neo4j.test.GraphDescription.Graph in project neo4j-documentation by neo4j.
the class StreamingBatchOperationDocIT method shouldHandleEscapedStrings.
@Test
@Graph("Peter likes Jazz")
public void shouldHandleEscapedStrings() throws ClientHandlerException, UniformInterfaceException, JSONException, JsonParseException {
String string = "Jazz";
Node gnode = getNode(string);
assertThat(gnode, inTx(graphdb(), Neo4jMatchers.hasProperty("name").withValue(string)));
String name = "string\\ and \"test\"";
String jsonString = new PrettyJSON().array().object().key("method").value("PUT").key("to").value("/node/" + gnode.getId() + "/properties").key("body").object().key("name").value(name).endObject().endObject().endArray().toString();
gen.get().expectedType(APPLICATION_JSON_TYPE).withHeader(StreamingFormat.STREAM_HEADER, "true").expectedStatus(200).payload(jsonString).post(batchUri()).entity();
jsonString = new PrettyJSON().array().object().key("method").value("GET").key("to").value("/node/" + gnode.getId() + "/properties/name").endObject().endArray().toString();
String entity = gen.get().expectedStatus(200).payload(jsonString).post(batchUri()).entity();
List<Map<String, Object>> results = JsonHelper.jsonToList(entity);
assertEquals(results.get(0).get("body"), name);
}
Aggregations