Package org.neo4j.cypherdsl

Source Code of org.neo4j.cypherdsl.CypherQueryTest2

/**
* Copyright (c) 2002-2013 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.neo4j.cypherdsl;

import org.junit.Test;

import static org.neo4j.cypherdsl.CypherQuery.*;

/**
* Tests for all parts of the Cypher DSL.
*/
public class CypherQueryTest2 extends AbstractCypherTest
{
    @Test
    public void testDSL()
    {
        assertQueryEquals( CYPHER + "START john=node(0) RETURN john", new CypherQuery()
        {{
                starts( nodesById( "john", 0 ) ).returns( identifier( "john" ) );
            }}.toString() );

        assertQueryEquals( CYPHER + "START john=node(0) MATCH r=(john)-[:KNOWS*1..3]->(x) RETURN x", new CypherQuery()
        {{
                starts( nodesById( "john", 0 ) ).
                        match( path( "r", node( "john" )
                                .out( "KNOWS" )
                                .hops( 1, 3 )
                                .node( "x" ) ) ).
                        returns( identifier( "x" ) );
            }}.toString() );

        assertQueryEquals( CYPHER + "START n=node(3,1) WHERE (n.age<30 and n.name=\"Tobias\") or not(n" +
                ".name=\"Tobias\") RETURN n", new CypherQuery()
        {{
                starts( nodesById( "n", 3, 1 ) ).
                        where( identifier( "n" ).property( "age" ).lt( 30 ).and( identifier( "n" ).string( "name" )
                                .eq( "Tobias" ) )
                                .or( not( identifier( "n" ).string( "name" ).eq( "Tobias" ) ) ) ).
                        returns( identifier( "n" ) );
            }}.toString() );
    }

    @Test
    public void testAndOrPrecedence()
    {
        assertQueryEquals( CYPHER + "START n=node(1) WHERE n.value=0 and (n.title=\"ololo\" or n.value=1) RETURN n",
                new CypherQuery()
                {{
                        starts( nodesById( "n", 1 ) ).
                                where( identifier( "n" ).number( "value" ).eq( 0 )
                                        .and( identifier( "n" ).string( "title" ).eq( "ololo" ).or( identifier( "n" )
                                                .number( "value" ).eq( 1 ) ) ) ).
                                returns( identifier( "n" ) );
                    }}.toString() );
    }

    @Test
    public void testLabel()
    {
        assertQueryEquals( CYPHER + "CREATE (n:Person:Swedish)",
                new CypherQuery()
                {{
                        creates( node("n").labels( label("Person"), label("Swedish") ) );
                    }}.toString() );
    }

    @Test
    public void testLabelWithSpaces()
    {
        assertQueryEquals( CYPHER + "MATCH (movie:`Movie With Spaces`) RETURN movie",
                match( node( "movie" ).label( "Movie With Spaces" ) ).
                        returns( identifier( "movie" ) ).
                        toString() );
    }

    @Test
    public void testLabelWithSpecialCharacters()
    {
        assertQueryEquals( CYPHER + "MATCH (movie:`Movie\"#'?!`) RETURN movie",
                match( node( "movie" ).label( "Movie\"#'?!" ) ).
                        returns( identifier( "movie" ) ).
                        toString() );
    }

    @Test
    public void testVariableLengthRelationshipWithProperties()
    {
        assertQueryEquals(CYPHER + "MATCH ()-[r:RATED*1.. {rating:5}]->() RETURN r",
                match(node().out("RATED").hops(1, null).values(value("rating", 5)).as("r").node()).
                        returns(identifier("r")).toString());
    }

    @Test
    public void testRelationshipWithOnlyProperties()
    {
        assertQueryEquals(CYPHER + "MATCH ()-[ {rating:5}]->(n) RETURN n",
                match(node().out().values(value("rating", 5)).node("n")).
                        returns(identifier("n")).toString());
    }

    @Test
    public void testLabelsFunction()
    {
        assertQueryEquals(CYPHER + "MATCH (n) RETURN labels(n)",
                match(node("n")).returns(labels(identifier("n"))).toString());
    }
}
TOP

Related Classes of org.neo4j.cypherdsl.CypherQueryTest2

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.