{"action":"created","comment":{"url":"https://api.github.com/repos/neo4j/neo4j/pulls/comments/44013849","id":44013849,"diff_hunk":"@@ -19,347 +19,305 @@\n  */\n package org.neo4j.cypher.docgen\n \n-import org.hamcrest.CoreMatchers._\n-import org.junit.Assert._\n-import org.junit.Test\n-import org.neo4j.graphdb._\n+import org.neo4j.cypher.docgen.tooling._\n+import org.neo4j.graphdb.{Path, Node}\n import org.neo4j.tooling.GlobalGraphOperations\n-import org.neo4j.visualization.graphviz.{AsciiDocSimpleStyle, GraphStyle}\n \n import scala.collection.JavaConverters._\n \n-class MatchTest extends DocumentingTestBase {\n-\n-  override def graphDescription = List(\n-    \"Charlie:Person ACTED_IN WallStreet:Movie\",\n-    \"Martin:Person ACTED_IN WallStreet:Movie\",\n-    \"Michael:Person ACTED_IN WallStreet:Movie\",\n-    \"Martin:Person ACTED_IN TheAmericanPresident:Movie\",\n-    \"Michael:Person ACTED_IN TheAmericanPresident:Movie\",\n-    \"Oliver:Person DIRECTED WallStreet:Movie\",\n-    \"Rob:Person DIRECTED TheAmericanPresident:Movie\")\n-\n-  override val properties = Map(\n-    \"Charlie\" -> Map(\"name\" -> \"Charlie Sheen\"),\n-    \"Oliver\" -> Map(\"name\" -> \"Oliver Stone\"),\n-    \"Michael\" -> Map(\"name\" -> \"Michael Douglas\"),\n-    \"Rob\" -> Map(\"name\" -> \"Rob Reiner\"),\n-    \"Martin\" -> Map(\"name\" -> \"Martin Sheen\"),\n-    \"WallStreet\" -> Map(\"title\" -> \"Wall Street\"),\n-    \"TheAmericanPresident\" -> Map(\"title\" -> \"The American President\")\n-  )\n-\n-  override val setupQueries = List(\"CREATE (r {name : 'Rob Reiner'})-[:`TYPE THAT HAS SPACE IN IT`]->(c {name : 'Charlie Sheen'})\")\n-\n-  override protected def getGraphvizStyle: GraphStyle =\n-    AsciiDocSimpleStyle.withAutomaticRelationshipTypeColors()\n-\n-  def section: String = \"MATCH\"\n-\n-  @Test def nodes_by_id() {\n-    testQuery(\n-      title = \"Node by id\",\n-      text = \"\"\"\n-Search for nodes by id can be done with the 'id' function in a predicate.\n-\n-[NOTE]\n-Neo4j reuses its internal ids when nodes and relationships are deleted.\n-This means that applications using, and relying on internal Neo4j ids, are brittle or at risk of making mistakes.\n-Rather use application generated ids.\n-             \"\"\",\n-      queryText = \"match (n) where id(n) = %Charlie% return n\",\n-      optionalResultExplanation = \"The corresponding node is returned.\",\n-      assertions = (p) => assertThat(p.columnAs[Node](\"n\").toList.asJava, hasItem(node(\"Charlie\"))))\n-  }\n-\n-  @Test def relationships_by_id() {\n-    testQuery(\n-      title = \"Relationship by id\",\n-      text = \"\"\"\n-Search for nodes by id can be done with the 'id' function in a predicate.\n-\n-This is not recommended practice. See <<match-node-by-id>> for more information on the use of Neo4j ids.\n-             \"\"\",\n-      queryText = \"match ()-[r]->() where id(r) = 0 return r\",\n-      optionalResultExplanation = \"The relationship with id +0+ is returned.\",\n-      assertions = (p) => assertThat(p.columnAs[Relationship](\"r\").toList.asJava, hasItem(rel(0))))\n-  }\n-\n-  @Test def multiple_nodes_by_id() {\n-    testQuery(\n-      title = \"Multiple nodes by id\",\n-      text = \"Multiple nodes are selected by specifying them in an IN clause.\",\n-      queryText = \"match (n) where id(n) in [%Charlie%, %Martin%, %Oliver%] return n\",\n-      optionalResultExplanation = \"This returns the nodes listed in the `IN` expression.\",\n-      assertions = (p) => assertEquals(Set(node(\"Charlie\"), node(\"Martin\"), node(\"Oliver\")), p.columnAs[Node](\"n\").toSet))\n-  }\n-\n-  @Test def start_with_multiple_nodes() {\n-    testQuery(\n-      title = \"Multiple identifiers by id\",\n-      text = \"Sometimes you want to return multiple nodes by id and separate identifiers. Just list them separated by commas.\",\n-      queryText = \"match (a), (b) where id(a) = %Charlie% and id(b) = %Martin% return a, b\",\n-      optionalResultExplanation = \"\"\"Both the nodes +Charlie+ and the +Martin+  are returned.\"\"\",\n-      assertions = p => assertEquals(List(Map(\"a\" -> node(\"Charlie\"), \"b\" -> node(\"Martin\"))), p.toList))\n-  }\n-\n-  @Test def get_all_nodes() {\n-    testQuery(\n-      title = \"Get all nodes\",\n-      text = \"By just specifying a pattern with a single node and no labels, all nodes in the graph will be returned.\",\n-      queryText = \"\"\"match (n) return n\"\"\",\n-      optionalResultExplanation = \"Returns all the nodes in the database.\",\n-      assertions = (p) => {\n-        val allNodes: List[Node] = GlobalGraphOperations.at(db).getAllNodes.asScala.toList\n-\n-        assertEquals(allNodes, p.columnAs[Node](\"n\").toList)\n-      }\n+class MatchTest extends DocumentingTest {\n+  override def outputPath = \"target/docs/dev/ql/\"\n+  override def doc = new DocBuilder {\n+    doc(\"Match\", \"query-match\")\n+    initQueries(\n+      \"\"\"CREATE (charlie:Person {name:'Charlie Sheen'}),\n+        |       (martin:Person {name: 'Martin Sheen'}),\n+        |       (michael:Person {name: 'Michael Douglas'}),\n+        |       (oliver:Person {name: 'Oliver Stone'}),\n+        |       (rob:Person {name: 'Rob Reiner'}),\n+        |\n+        |       (wallStreet:Movie {title: 'Wall Street'}),\n+        |       (charlie)-[:ACTED_IN {role: \"Bud Fox\"}]->(wallStreet),\n+        |       (martin)-[:ACTED_IN {role: \"Carl Fox\"}]->(wallStreet),\n+        |       (michael)-[:ACTED_IN {role: \"Gordon Gekko\"}]->(wallStreet),\n+        |       (oliver)-[:DIRECTED]->(wallStreet),\n+        |\n+        |       (thePresident:Movie {title: 'The American President'}),\n+        |       (martin)-[:ACTED_IN {role: \"A.J. MacInerney\"}]->(thePresident),\n+        |       (michael)-[:ACTED_IN {role: \"President Andrew Shepherd\"}]->(thePresident),\n+        |       (rob)-[:DIRECTED]->(thePresident)\"\"\"\n     )\n-  }\n-\n-  @Test def get_multiple_nodes() {\n-    testQuery(\n-      title = \"Multiple starting points\",\n-      text = \"By specifying two node patterns all combinations of the two nodes will be returned, so it is advised to add a constraint.\",\n-      queryText = \"\"\"match (a), (b) where id(a) = id(b) return a, b\"\"\",\n-      optionalResultExplanation = \"Returns the combinations of the two nodes from the database.\",\n-      assertions = (p) => {\n-        val allNodes: List[Node] = GlobalGraphOperations.at(db).getAllNodes.asScala.toList\n-\n-        assertEquals(allNodes, p.columnAs[Node](\"a\").toList)\n+    synopsis(\"The `MATCH` clause is used to search for the pattern described in it.\")\n+    section(\"Introduction\") {\n+      p( \"\"\"The `MATCH` clause allows you to specify the patterns Neo4j will search for in the database.\n+           |This is the primary way of getting data into the current set of bindings.\n+           |It is worth reading up more on the specification of the patterns themselves in <<introduction-pattern>>.\"\"\")\n+      p( \"\"\"`MATCH` is often coupled to a `WHERE` part which adds restrictions, or predicates, to the `MATCH` patterns, making them more specific.\n+           |The predicates are part of the pattern description, not a filter applied after the matching is done.\n+           |_This means that `WHERE` should always be put together with the `MATCH` clause it belongs to._\"\"\")\n+      p( \"\"\"`MATCH` can occur at the beginning of the query or later, possibly after a `WITH`.\n+           |If it is the first clause, nothing will have been bound yet, and Neo4j will design a search to find the results matching the clause and any associated predicates specified in any `WHERE` part.\n+           |This could involve a scan of the database, a search for nodes of a certain label, or a search of an index to find starting points for the pattern matching.\n+           |Nodes and relationships found by this search are available as _bound pattern elements,_ and can be used for pattern matching of sub-graphs.\n+           |They can also be used in any further `MATCH` clauses, where Neo4j will use the known elements, and from there find further unknown elements.\"\"\")\n+      p( \"\"\"Cypher is declarative, and so usually the query itself does not specify the algorithm to use to perform the search.\n+           |Neo4j will automatically work out the best approach to finding start nodes and matching patterns.\n+           |Predicates in `WHERE` parts can be evaluated before pattern matching, during pattern matching, or after finding matches.\n+           |However, there are cases where you can influence the decisions taken by the query compiler.\n+           |Read more about indexes in <<query-schema-index>>, and more about the specifying index hints to force Neo4j to use a specific index in <<query-using>>.\"\"\")\n+      tip {\n+        p(\"To understand more about the patterns used in the +MATCH+ clause, read <<introduction-pattern>>\")\n       }\n-    )\n-  }\n-\n-  @Test def get_all_labeled_nodes() {\n-    testQuery(\n-      title = \"Get all nodes with a label\",\n-      text = \"Getting all nodes with a label on them is done with a single node pattern where the node has a label on it.\",\n-      queryText = \"\"\"match (movie:Movie) return movie\"\"\",\n-      optionalResultExplanation = \"Returns all the movies in the database.\",\n-      assertions = (p) => assertEquals(nodes(\"WallStreet\", \"TheAmericanPresident\").toSet, p.columnAs[Node](\"movie\").toSet)\n-    )\n-  }\n-\n-  @Test def allRelationships() {\n-    testQuery(\n-      title = \"Related nodes\",\n-      text = \"The symbol `--` means _related to,_ without regard to type or direction of the relationship.\",\n-      queryText = \"\"\"match (director {name:'Oliver Stone'})--(movie) return movie.title\"\"\",\n-      optionalResultExplanation = \"\"\"Returns all the movies directed by Oliver Stone.\"\"\",\n-      assertions = (p) => assertEquals(List(\"Wall Street\"), p.columnAs[Node](\"movie.title\").toList)\n-    )\n-  }\n-\n-  @Test def allOutgoingRelationships() {\n-    testQuery(\n-      title = \"Outgoing relationships\",\n-      text = \"When the direction of a relationship is interesting, it is shown by using `-->` or `<--`, like this: \",\n-      queryText = \"\"\"match (martin {name:'Martin Sheen'})-->(movie) return movie.title\"\"\",\n-      optionalResultExplanation = \"\"\"Returns nodes connected to Martin by outgoing relationships.\"\"\",\n-      assertions = (p) => assertEquals(Set(\"Wall Street\", \"The American President\"), p.columnAs[Node](\"movie.title\").toSet)\n-    )\n-  }\n-\n-  @Test def allOutgoingRelationships2() {\n-    testQuery(\n-      title = \"Directed relationships and identifier\",\n-      text = \"If an identifier is needed, either for filtering on properties of the relationship, or to return the relationship, \" +\n-        \"this is how you introduce the identifier.\",\n-      queryText = \"\"\"match (martin {name:'Martin Sheen'})-[r]->(movie) return r\"\"\",\n-      optionalResultExplanation = \"\"\"Returns all outgoing relationships from Martin.\"\"\",\n-      assertions = (p) => assertEquals(2, p.size)\n-    )\n-  }\n-\n-  @Test def relatedNodesByRelationshipType() {\n-    testQuery(\n-      title = \"Match by relationship type\",\n-      text = \"When you know the relationship type you want to match on, you can specify it by using a colon together with the relationship type.\",\n-      queryText = \"\"\"match (wallstreet {title:'Wall Street'})<-[:ACTED_IN]-(actor) return actor\"\"\",\n-      optionalResultExplanation = \"\"\"Returns nodes that +ACTED_IN+ Wall Street.\"\"\",\n-      assertions = (p) => assertEquals(nodes(\"Michael\",\"Martin\",\"Charlie\").toSet, p.columnAs[Node](\"actor\").toSet)\n-    )\n-  }\n-\n-  @Test def relatedNodesByMultipleRelationshipTypes() {\n-    testQuery(\n-      title = \"Match by multiple relationship types\",\n-      text = \"To match on one of multiple types, you can specify this by chaining them together with the pipe symbol `|`.\",\n-      queryText = \"\"\"match (wallstreet {title:'Wall Street'})<-[:ACTED_IN|:DIRECTED]-(person) return person\"\"\",\n-      optionalResultExplanation = \"\"\"Returns nodes with a +ACTED_IN+ or +DIRECTED+ relationship to Wall Street.\"\"\",\n-      assertions = (p) => assertEquals(nodes(\"Michael\",\"Martin\",\"Charlie\",\"Oliver\").toSet, p.columnAs[Node](\"person\").toSet)\n-    )\n-  }\n-\n-  @Test def relationshipsByType() {\n-    testQuery(\n-      title = \"Match by relationship type and use an identifier\",\n-      text = \"If you both want to introduce an identifier to hold the relationship, and specify the relationship type you want, \" +\n-        \"just add them both, like this.\",\n-      queryText = \"\"\"match (wallstreet {title:'Wall Street'})<-[r:ACTED_IN]-(actor) return r\"\"\",\n-      optionalResultExplanation = \"\"\"Returns nodes that +ACTED_IN+ Wall Street.\"\"\",\n-      assertions = (p) => assertEquals(3, p.size)\n-    )\n-  }\n-\n-  @Test def relationshipsByTypeWithSpace() {\n-    testQuery(\n-      title = \"Relationship types with uncommon characters\",\n-      text = \"Sometime your database will have types with non-letter characters, or with spaces in them. Use +`+ (backtick) to quote these.\",\n-      queryText = \"\"\"match (n {name:'Rob Reiner'})-[r:`TYPE THAT HAS SPACE IN IT`]->() return r\"\"\",\n-      optionalResultExplanation = \"\"\"Returns a relationship of a type with spaces in it.\"\"\",\n-      assertions = (p) => assertEquals(1, p.size)\n-    )\n-  }\n-\n-  @Test def multiStepRelationships() {\n-    testQuery(\n-      title = \"Multiple relationships\",\n-      text = \"Relationships can be expressed by using multiple statements in the form of `()--()`, or they can be strung together, \" +\n-        \"like this:\",\n-      queryText = \"\"\"match (charlie {name:'Charlie Sheen'})-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director) return charlie,movie,director\"\"\",\n-      optionalResultExplanation = \"\"\"Returns the three nodes in the path.\"\"\",\n-      assertions = (p) => assertEquals(List(Map(\"charlie\" -> node(\"Charlie\"), \"movie\" -> node(\"WallStreet\"), \"director\" -> node(\"Oliver\"))), p.toList)\n-    )\n-  }\n-\n-  @Test def variableLengthPath() {\n-    testQuery(\n-      title = \"Variable length relationships\",\n-      text = \"Nodes that are a variable number of relationship->node hops away can be found using the following syntax: `-[:TYPE*minHops..maxHops]->`. \" +\n-        \"minHops and maxHops are optional and default to 1 and infinity respectively. When no bounds are given the dots may be omitted.\",\n-      queryText = \"\"\"match (martin {name:\"Martin Sheen\"})-[:ACTED_IN*1..2]-(x) return x\"\"\",\n-      optionalResultExplanation = \"Returns nodes that are 1 or 2 relationships away from Martin.\",\n-      assertions = (p) => assertEquals(Set(node(\"Charlie\"), node(\"WallStreet\"), node(\"Michael\"), node(\"TheAmericanPresident\")), p.columnAs[Node](\"x\").toSet)\n-    )\n-  }\n-\n-  @Test def variableLengthPathWithIterableRels() {\n-    testQuery(\n-      title = \"Relationship identifier in variable length relationships\",\n-      text = \"When the connection between two nodes is of variable length, \" +\n-        \"a relationship identifier becomes an collection of relationships.\",\n-      queryText = \"\"\"match (actor {name:'Charlie Sheen'})-[r:ACTED_IN*2]-(co_actor) return r\"\"\",\n-      optionalResultExplanation = \"The query returns a collection of relationships.\",\n-      assertions = (p) => assertEquals(2, p.size)\n-    )\n-  }\n+      p(\"The following graph is used for the examples below:\")\n+      graphViz()\n+    }\n+    section(\"Basic node finding\") {\n+      section(\"Get all nodes\") {\n+        p(\"By just specifying a pattern with a single node and no labels, all nodes in the graph will be returned.\")\n+        query(\"MATCH (n) RETURN n\", assertAllNodesReturned) {\n+          p(\"Returns all the nodes in the database.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Get all nodes with a label\") {\n+        p(\"Getting all nodes with a label on them is done with a single node pattern where the node has a label on it.\")\n+        query(\"MATCH (movie:Movie) RETURN movie.title\", assertAllMoviesAreReturned) {\n+          p(\"Returns all the movies in the database.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Related nodes\") {\n+        p(\"The symbol `--` means _related to,_ without regard to type or direction of the relationship.\")\n+        query(\"MATCH (director { name:'Oliver Stone' })--(movie) RETURN movie.title\", assertWallStreetIsReturned) {\n+          p(\"Returns all the movies directed by Oliver Stone.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Match with labels\") {\n+        p(\"To constrain your pattern with labels on nodes, you add it to your pattern nodes, using the label syntax.\")\n+        query(\"MATCH (:Person { name:'Oliver Stone' })--(movie:Movie) RETURN movie.title\", assertWallStreetIsReturned) {\n+          p(\"Return any nodes connected with the +Person+ Oliver that are labeled +Movie+.\")\n+          resultTable()\n+        }\n+      }\n+    }\n+    section(\"Relationship basics\") {\n+      section(\"Outgoing relationships\") {\n+        p(\"When the direction of a relationship is interesting, it is shown by using `-->` or `<--`, like this:\")\n+        query(\"MATCH (:Person { name:'Oliver Stone' })-->(movie) RETURN movie.title\", assertWallStreetIsReturned) {\n+          p(\"Return any nodes connected with the +Person+ Oliver that are labeled +Movie+.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Directed relationships and identifier\") {\n+        p(\"If an identifier is needed, either for filtering on properties of the relationship, or to return the relationship, this is how you introduce the identifier.\")\n+        query(\"MATCH (:Person { name:'Oliver Stone' })-[r]->(movie) RETURN type(r)\", assertRelationshipIsDirected) {\n+          p(\"Returns all outgoing relationships from Oliver.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Match by relationship type\") {\n+        p(\"When you know the relationship type you want to match on, you can specify it by using a colon together with the relationship type.\")\n+        query(\"MATCH (wallstreet:Movie { title:'Wall Street' })<-[:ACTED_IN]-(actor) RETURN actor.name\", assertAllActorsOfWallStreetAreFound) {\n+          p(\"Returns all outgoing relationships from Oliver.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Match by multiple relationship types\") {\n+        p(\"To match on one of multiple types, you can specify this by chaining them together with the pipe symbol `|`.\")\n+        query(\"MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person) RETURN person.name\", assertEveryoneConnectedToWallStreetIsFound) {\n+          p(\"Returns nodes with a +ACTED_IN+ or +DIRECTED+ relationship to Wall Street.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Match by relationship type and use an identifier\") {\n+        p(\"If you both want to introduce an identifier to hold the relationship, and specify the relationship type you want, just add them both, like this:\")\n+        query(\"MATCH (wallstreet { title:'Wall Street' })<-[r:ACTED_IN]-(actor) RETURN r\", assertRelationshipsToWallStreetAreReturned) {\n+          p(\"Returns nodes that +ACTED_IN+ Wall Street.\")\n+          resultTable()\n+        }\n+      }\n+    }\n+    section(\"Relationships in depth\") {\n+      note {\n+        p(\"Inside a single pattern, relationships will only be matched once. You can read more about this in <<cypherdoc-uniqueness>>\")\n+      }\n+      section(\"Relationship types with uncommon characters\") {\n+        p(\"Sometime your database will have types with non-letter characters, or with spaces in them. Use +`+ (backtick) to quote these.\")\n+        query(\"MATCH (n { name:'Rob Reiner' })-[r:`TYPE THAT HAS SPACE IN IT`]->() RETURN count(*)\", assertTypeWithRelsExist) {\n+          resultTable()\n+        }\n+      }\n+      section(\"Multiple relationships\") {\n+        p(\"Relationships can be expressed by using multiple statements in the form of `()--()`, or they can be strung together, like this:\")\n+        query(\"match (charlie {name:'Charlie Sheen'})-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director) return movie.title, director.name\", assertFindAllDirectors) {\n+          p(\"Returns the three nodes in the path.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Variable length relationships\") {\n+        p(\"Nodes that are a variable number of relationship->node hops away can be found using the following syntax: `-[:TYPE*minHops..maxHops]->`. \")\n+        query(\"match (martin {name:'Charlie Sheen'})-[:ACTED_IN*1..3]-(movie:Movie) return movie.title\", assertAllMoviesAreReturned) {\n+          p(\"Returns the three nodes in the path.\")\n+          resultTable()\n+        }\n+      }\n+      section(\"Relationship identifier in variable length relationships\") {\n+        p(\"When the connection between two nodes is of variable length, a relationship identifier becomes an collection of relationships.\")\n+        query(\"MATCH (actor { name:'Charlie Sheen' })-[r:ACTED_IN*2]-(co_actor)\\nRETURN r\", assertActedInRelationshipsAreReturned) {\n+          p(\"The query returns a collection of relationships.\")","path":"manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/MatchTest.scala","position":370,"original_position":370,"commit_id":"80d109d5dab1549a9669924090bc570199eff9cf","original_commit_id":"80d109d5dab1549a9669924090bc570199eff9cf","user":{"login":"Mats-SX","id":2419675,"avatar_url":"https://avatars.githubusercontent.com/u/2419675?v=3","gravatar_id":"","url":"https://api.github.com/users/Mats-SX","html_url":"https://github.com/Mats-SX","followers_url":"https://api.github.com/users/Mats-SX/followers","following_url":"https://api.github.com/users/Mats-SX/following{/other_user}","gists_url":"https://api.github.com/users/Mats-SX/gists{/gist_id}","starred_url":"https://api.github.com/users/Mats-SX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mats-SX/subscriptions","organizations_url":"https://api.github.com/users/Mats-SX/orgs","repos_url":"https://api.github.com/users/Mats-SX/repos","events_url":"https://api.github.com/users/Mats-SX/events{/privacy}","received_events_url":"https://api.github.com/users/Mats-SX/received_events","type":"User","site_admin":false},"body":"If the return is changed like my suggestion above, also change this.","created_at":"2015-11-05T14:03:58Z","updated_at":"2015-11-05T14:03:58Z","html_url":"https://github.com/neo4j/neo4j/pull/5831#discussion_r44013849","pull_request_url":"https://api.github.com/repos/neo4j/neo4j/pulls/5831","_links":{"self":{"href":"https://api.github.com/repos/neo4j/neo4j/pulls/comments/44013849"},"html":{"href":"https://github.com/neo4j/neo4j/pull/5831#discussion_r44013849"},"pull_request":{"href":"https://api.github.com/repos/neo4j/neo4j/pulls/5831"}}},"pull_request":{"url":"https://api.github.com/repos/neo4j/neo4j/pulls/5831","id":49672184,"html_url":"https://github.com/neo4j/neo4j/pull/5831","diff_url":"https://github.com/neo4j/neo4j/pull/5831.diff","patch_url":"https://github.com/neo4j/neo4j/pull/5831.patch","issue_url":"https://api.github.com/repos/neo4j/neo4j/issues/5831","number":5831,"state":"open","locked":false,"title":"MatchTest uses the new Cypher doc build system","user":{"login":"henriknyman","id":13960026,"avatar_url":"https://avatars.githubusercontent.com/u/13960026?v=3","gravatar_id":"","url":"https://api.github.com/users/henriknyman","html_url":"https://github.com/henriknyman","followers_url":"https://api.github.com/users/henriknyman/followers","following_url":"https://api.github.com/users/henriknyman/following{/other_user}","gists_url":"https://api.github.com/users/henriknyman/gists{/gist_id}","starred_url":"https://api.github.com/users/henriknyman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/henriknyman/subscriptions","organizations_url":"https://api.github.com/users/henriknyman/orgs","repos_url":"https://api.github.com/users/henriknyman/repos","events_url":"https://api.github.com/users/henriknyman/events{/privacy}","received_events_url":"https://api.github.com/users/henriknyman/received_events","type":"User","site_admin":false},"body":"- Completed NewMatchTest and renamed it MatchTest\r\n- Added IDREF to Section in DSL\r\n- Renamed NewPrettyGraphTest to PrettyGraphTest","created_at":"2015-11-04T10:38:25Z","updated_at":"2015-11-05T14:03:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4a805eab263d1b082982849227de1ae99cb3d1f7","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/neo4j/neo4j/pulls/5831/commits","review_comments_url":"https://api.github.com/repos/neo4j/neo4j/pulls/5831/comments","review_comment_url":"https://api.github.com/repos/neo4j/neo4j/pulls/comments{/number}","comments_url":"https://api.github.com/repos/neo4j/neo4j/issues/5831/comments","statuses_url":"https://api.github.com/repos/neo4j/neo4j/statuses/80d109d5dab1549a9669924090bc570199eff9cf","head":{"label":"henriknyman:3.0-newmatchtest","ref":"3.0-newmatchtest","sha":"80d109d5dab1549a9669924090bc570199eff9cf","user":{"login":"henriknyman","id":13960026,"avatar_url":"https://avatars.githubusercontent.com/u/13960026?v=3","gravatar_id":"","url":"https://api.github.com/users/henriknyman","html_url":"https://github.com/henriknyman","followers_url":"https://api.github.com/users/henriknyman/followers","following_url":"https://api.github.com/users/henriknyman/following{/other_user}","gists_url":"https://api.github.com/users/henriknyman/gists{/gist_id}","starred_url":"https://api.github.com/users/henriknyman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/henriknyman/subscriptions","organizations_url":"https://api.github.com/users/henriknyman/orgs","repos_url":"https://api.github.com/users/henriknyman/repos","events_url":"https://api.github.com/users/henriknyman/events{/privacy}","received_events_url":"https://api.github.com/users/henriknyman/received_events","type":"User","site_admin":false},"repo":{"id":41737676,"name":"neo4j","full_name":"henriknyman/neo4j","owner":{"login":"henriknyman","id":13960026,"avatar_url":"https://avatars.githubusercontent.com/u/13960026?v=3","gravatar_id":"","url":"https://api.github.com/users/henriknyman","html_url":"https://github.com/henriknyman","followers_url":"https://api.github.com/users/henriknyman/followers","following_url":"https://api.github.com/users/henriknyman/following{/other_user}","gists_url":"https://api.github.com/users/henriknyman/gists{/gist_id}","starred_url":"https://api.github.com/users/henriknyman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/henriknyman/subscriptions","organizations_url":"https://api.github.com/users/henriknyman/orgs","repos_url":"https://api.github.com/users/henriknyman/repos","events_url":"https://api.github.com/users/henriknyman/events{/privacy}","received_events_url":"https://api.github.com/users/henriknyman/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/henriknyman/neo4j","description":"Graphs for Everyone","fork":true,"url":"https://api.github.com/repos/henriknyman/neo4j","forks_url":"https://api.github.com/repos/henriknyman/neo4j/forks","keys_url":"https://api.github.com/repos/henriknyman/neo4j/keys{/key_id}","collaborators_url":"https://api.github.com/repos/henriknyman/neo4j/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/henriknyman/neo4j/teams","hooks_url":"https://api.github.com/repos/henriknyman/neo4j/hooks","issue_events_url":"https://api.github.com/repos/henriknyman/neo4j/issues/events{/number}","events_url":"https://api.github.com/repos/henriknyman/neo4j/events","assignees_url":"https://api.github.com/repos/henriknyman/neo4j/assignees{/user}","branches_url":"https://api.github.com/repos/henriknyman/neo4j/branches{/branch}","tags_url":"https://api.github.com/repos/henriknyman/neo4j/tags","blobs_url":"https://api.github.com/repos/henriknyman/neo4j/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/henriknyman/neo4j/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/henriknyman/neo4j/git/refs{/sha}","trees_url":"https://api.github.com/repos/henriknyman/neo4j/git/trees{/sha}","statuses_url":"https://api.github.com/repos/henriknyman/neo4j/statuses/{sha}","languages_url":"https://api.github.com/repos/henriknyman/neo4j/languages","stargazers_url":"https://api.github.com/repos/henriknyman/neo4j/stargazers","contributors_url":"https://api.github.com/repos/henriknyman/neo4j/contributors","subscribers_url":"https://api.github.com/repos/henriknyman/neo4j/subscribers","subscription_url":"https://api.github.com/repos/henriknyman/neo4j/subscription","commits_url":"https://api.github.com/repos/henriknyman/neo4j/commits{/sha}","git_commits_url":"https://api.github.com/repos/henriknyman/neo4j/git/commits{/sha}","comments_url":"https://api.github.com/repos/henriknyman/neo4j/comments{/number}","issue_comment_url":"https://api.github.com/repos/henriknyman/neo4j/issues/comments{/number}","contents_url":"https://api.github.com/repos/henriknyman/neo4j/contents/{+path}","compare_url":"https://api.github.com/repos/henriknyman/neo4j/compare/{base}...{head}","merges_url":"https://api.github.com/repos/henriknyman/neo4j/merges","archive_url":"https://api.github.com/repos/henriknyman/neo4j/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/henriknyman/neo4j/downloads","issues_url":"https://api.github.com/repos/henriknyman/neo4j/issues{/number}","pulls_url":"https://api.github.com/repos/henriknyman/neo4j/pulls{/number}","milestones_url":"https://api.github.com/repos/henriknyman/neo4j/milestones{/number}","notifications_url":"https://api.github.com/repos/henriknyman/neo4j/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/henriknyman/neo4j/labels{/name}","releases_url":"https://api.github.com/repos/henriknyman/neo4j/releases{/id}","created_at":"2015-09-01T12:39:03Z","updated_at":"2015-09-01T12:39:28Z","pushed_at":"2015-11-05T12:26:06Z","git_url":"git://github.com/henriknyman/neo4j.git","ssh_url":"git@github.com:henriknyman/neo4j.git","clone_url":"https://github.com/henriknyman/neo4j.git","svn_url":"https://github.com/henriknyman/neo4j","homepage":"http://neo4j.com","size":212051,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"2.3"}},"base":{"label":"neo4j:3.0","ref":"3.0","sha":"b7d05b37f756c52f51deb268b8136883ff436a13","user":{"login":"neo4j","id":201120,"avatar_url":"https://avatars.githubusercontent.com/u/201120?v=3","gravatar_id":"","url":"https://api.github.com/users/neo4j","html_url":"https://github.com/neo4j","followers_url":"https://api.github.com/users/neo4j/followers","following_url":"https://api.github.com/users/neo4j/following{/other_user}","gists_url":"https://api.github.com/users/neo4j/gists{/gist_id}","starred_url":"https://api.github.com/users/neo4j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neo4j/subscriptions","organizations_url":"https://api.github.com/users/neo4j/orgs","repos_url":"https://api.github.com/users/neo4j/repos","events_url":"https://api.github.com/users/neo4j/events{/privacy}","received_events_url":"https://api.github.com/users/neo4j/received_events","type":"Organization","site_admin":false},"repo":{"id":6650539,"name":"neo4j","full_name":"neo4j/neo4j","owner":{"login":"neo4j","id":201120,"avatar_url":"https://avatars.githubusercontent.com/u/201120?v=3","gravatar_id":"","url":"https://api.github.com/users/neo4j","html_url":"https://github.com/neo4j","followers_url":"https://api.github.com/users/neo4j/followers","following_url":"https://api.github.com/users/neo4j/following{/other_user}","gists_url":"https://api.github.com/users/neo4j/gists{/gist_id}","starred_url":"https://api.github.com/users/neo4j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neo4j/subscriptions","organizations_url":"https://api.github.com/users/neo4j/orgs","repos_url":"https://api.github.com/users/neo4j/repos","events_url":"https://api.github.com/users/neo4j/events{/privacy}","received_events_url":"https://api.github.com/users/neo4j/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/neo4j/neo4j","description":"Graphs for Everyone","fork":false,"url":"https://api.github.com/repos/neo4j/neo4j","forks_url":"https://api.github.com/repos/neo4j/neo4j/forks","keys_url":"https://api.github.com/repos/neo4j/neo4j/keys{/key_id}","collaborators_url":"https://api.github.com/repos/neo4j/neo4j/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/neo4j/neo4j/teams","hooks_url":"https://api.github.com/repos/neo4j/neo4j/hooks","issue_events_url":"https://api.github.com/repos/neo4j/neo4j/issues/events{/number}","events_url":"https://api.github.com/repos/neo4j/neo4j/events","assignees_url":"https://api.github.com/repos/neo4j/neo4j/assignees{/user}","branches_url":"https://api.github.com/repos/neo4j/neo4j/branches{/branch}","tags_url":"https://api.github.com/repos/neo4j/neo4j/tags","blobs_url":"https://api.github.com/repos/neo4j/neo4j/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/neo4j/neo4j/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/neo4j/neo4j/git/refs{/sha}","trees_url":"https://api.github.com/repos/neo4j/neo4j/git/trees{/sha}","statuses_url":"https://api.github.com/repos/neo4j/neo4j/statuses/{sha}","languages_url":"https://api.github.com/repos/neo4j/neo4j/languages","stargazers_url":"https://api.github.com/repos/neo4j/neo4j/stargazers","contributors_url":"https://api.github.com/repos/neo4j/neo4j/contributors","subscribers_url":"https://api.github.com/repos/neo4j/neo4j/subscribers","subscription_url":"https://api.github.com/repos/neo4j/neo4j/subscription","commits_url":"https://api.github.com/repos/neo4j/neo4j/commits{/sha}","git_commits_url":"https://api.github.com/repos/neo4j/neo4j/git/commits{/sha}","comments_url":"https://api.github.com/repos/neo4j/neo4j/comments{/number}","issue_comment_url":"https://api.github.com/repos/neo4j/neo4j/issues/comments{/number}","contents_url":"https://api.github.com/repos/neo4j/neo4j/contents/{+path}","compare_url":"https://api.github.com/repos/neo4j/neo4j/compare/{base}...{head}","merges_url":"https://api.github.com/repos/neo4j/neo4j/merges","archive_url":"https://api.github.com/repos/neo4j/neo4j/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/neo4j/neo4j/downloads","issues_url":"https://api.github.com/repos/neo4j/neo4j/issues{/number}","pulls_url":"https://api.github.com/repos/neo4j/neo4j/pulls{/number}","milestones_url":"https://api.github.com/repos/neo4j/neo4j/milestones{/number}","notifications_url":"https://api.github.com/repos/neo4j/neo4j/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/neo4j/neo4j/labels{/name}","releases_url":"https://api.github.com/repos/neo4j/neo4j/releases{/id}","created_at":"2012-11-12T08:46:15Z","updated_at":"2015-11-04T12:53:55Z","pushed_at":"2015-11-05T13:59:52Z","git_url":"git://github.com/neo4j/neo4j.git","ssh_url":"git@github.com:neo4j/neo4j.git","clone_url":"https://github.com/neo4j/neo4j.git","svn_url":"https://github.com/neo4j/neo4j","homepage":"http://neo4j.com","size":556766,"stargazers_count":2081,"watchers_count":2081,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":777,"mirror_url":null,"open_issues_count":516,"forks":777,"open_issues":516,"watchers":2081,"default_branch":"3.0"}},"_links":{"self":{"href":"https://api.github.com/repos/neo4j/neo4j/pulls/5831"},"html":{"href":"https://github.com/neo4j/neo4j/pull/5831"},"issue":{"href":"https://api.github.com/repos/neo4j/neo4j/issues/5831"},"comments":{"href":"https://api.github.com/repos/neo4j/neo4j/issues/5831/comments"},"review_comments":{"href":"https://api.github.com/repos/neo4j/neo4j/pulls/5831/comments"},"review_comment":{"href":"https://api.github.com/repos/neo4j/neo4j/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/neo4j/neo4j/pulls/5831/commits"},"statuses":{"href":"https://api.github.com/repos/neo4j/neo4j/statuses/80d109d5dab1549a9669924090bc570199eff9cf"}}}}