@Test public void testFindByLabel() throws Exception { query = nodeQueryStatements.findByType("NODE", 1); assertThat(query.getStatement()).isEqualTo("MATCH (n:`NODE`) WITH n MATCH p=(n)-[*0..1]-(m) RETURN p"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{}"); }
@Test public void testFindByPropertyInfiniteDepth() { assertThat(queryStatements.findByType("Raptor", filters, -1).setPagination(paging).getStatement()) .isEqualTo( "MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)"); }
@Test public void testFindByType() { assertThat(queryStatements.findByType("Raptor", 1).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
@Test public void testFindByProperty() { assertThat(queryStatements.findByType("Raptor", filters, 2).setPagination(paging).getStatement()) .isEqualTo( "MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..2]-(m) RETURN p, ID(n)"); }
@Test public void testFindByTypeZeroDepth() throws Exception { assertThat(queryStatements.findByType("Raptor", 0).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 4 LIMIT 2 RETURN n"); }
@Test public void testFindByTypeInfiniteDepth() throws Exception { assertThat(queryStatements.findByType("Raptor", -1).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)"); }
@Test public void findByPropertyEmbeddedDelimiter() throws Exception { query = nodeQueryStatements.findByType("Cookbooks", new Filters().add(new Filter("title", ComparisonOperator.EQUALS, "Mrs Beeton's Household Recipes")), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Cookbooks`) WHERE n.`title` = { `title_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())) .isEqualTo("{\"title_0\":\"Mrs Beeton's Household Recipes\"}"); }
@Test public void findByPropertyStringValue() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("ref", ComparisonOperator.EQUALS, "45 Eugenia")), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`ref` = { `ref_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"ref_0\":\"45 Eugenia\"}"); }
@Test public void findByPropertyStandardForm() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("diameter", ComparisonOperator.EQUALS, 6.02E1)), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`diameter` = { `diameter_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"diameter_0\":60.2}"); }
@Test public void findByPropertyDecimal() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("diameter", ComparisonOperator.EQUALS, 60.2)), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`diameter` = { `diameter_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"diameter_0\":60.2}"); }
@Test public void findByPropertyWildcardLike() throws JsonProcessingException { Filter filter = new Filter("ref", ComparisonOperator.LIKE, "*nia"); query = nodeQueryStatements.findByType("Asteroid", new Filters().add(filter), 1); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"ref_0\":\"(?i).*nia\"}"); }
@Test public void testFindByTypeAndOffset() { Pagination pagination = new Pagination(1, 5); pagination.setOffset(3); PagingAndSortingQuery query = queryStatements.findByType("Raptor", 1).setPagination(pagination); assertThat(query.getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 3 LIMIT 5 MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
@Test public void testMultipleSortOrders() { String cypher = "MATCH (n:`Raptor`) WITH n ORDER BY n.age DESC,n.name DESC RETURN n"; check(cypher, query.findByType("Raptor", 0).setSortOrder(sortOrder.add(DESC, "age", "name")).getStatement()); check(cypher, query.findByType("Raptor", 0).setSortOrder(new SortOrder(DESC, "age", "name")).getStatement()); check(cypher, query.findByType("Raptor", 0).setSortOrder(new SortOrder().desc("age", "name")).getStatement()); }
@Test public void testFindByTypeDepthInfinite() { sortOrder.add(DESC, "name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.name DESC MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)", query.findByType("Raptor", -1).setSortOrder(sortOrder).getStatement()); }
@Test public void testFindByType() { sortOrder.add("name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.name MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)", query.findByType("Raptor", 1).setSortOrder(sortOrder).getStatement()); }
@Test public void testFindByTypeDepthZero() { sortOrder.add(DESC, "name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.name DESC RETURN n", query.findByType("Raptor", 0).setSortOrder(sortOrder).getStatement()); }
@Test public void testDifferentSortDirections() { sortOrder.add(DESC, "age").add("name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.age DESC,n.name RETURN n", query.findByType("Raptor", 0).setSortOrder(sortOrder).getStatement()); }
@Test public void testFindByProperty() { sortOrder.add(DESC, "weight"); filters.add(new Filter("name", EQUALS, "velociraptor")); check( "MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n ORDER BY n.weight DESC MATCH p=(n)-[*0..2]-(m) RETURN p, ID(n)", query.findByType("Raptor", filters, 2).setSortOrder(sortOrder).getStatement()); }
@Test public void testByPropertyDepthZero() { filters.add(new Filter("name", EQUALS, "velociraptor")); sortOrder.add(DESC, "weight"); check("MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n ORDER BY n.weight DESC RETURN n", query.findByType("Raptor", filters, 0).setSortOrder(sortOrder).getStatement()); }
@Test public void testFindByPropertyDepthInfinite() { sortOrder.add(DESC, "name"); filters.add(new Filter("name", EQUALS, "velociraptor")); check( "MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n ORDER BY n.name DESC MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)", query.findByType("Raptor", filters, -1).setSortOrder(sortOrder).getStatement()); }