/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.neo4j.test.dsl;
import static org.fest.assertions.Assertions.assertThat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hibernate.ogm.datastore.neo4j.utils.Neo4jTestHelperDelegate;
import org.hibernate.ogm.datastore.spi.DatastoreProvider;
/**
* Assertion methods to check the mapping of nodes and relationships in Neo4j.
*
* @author Davide D'Alto
*/
public class GraphAssertions {
public static NodeForGraphAssertions node(String alias, String... labels) {
return new NodeForGraphAssertions( alias, labels );
}
public static void assertThatExists(Neo4jTestHelperDelegate delegate, DatastoreProvider datastoreProvider, NodeForGraphAssertions node) throws Exception {
Object result = delegate.findNode( datastoreProvider, node );
assertThat( result ).as( "Node [" + node.getAlias() + "] not found. Looked for " + node.toCypher() + " with parameters: " + node.getParams() )
.isNotNull();
Map<String, Object> propertyKeys = delegate.findProperties( datastoreProvider, node );
Set<String> expectedProperties = node.getProperties().keySet();
List<String> unexpectedProperties = new ArrayList<String>();
for ( String actual : propertyKeys.keySet() ) {
if ( !expectedProperties.contains( actual ) ) {
unexpectedProperties.add( actual );
}
}
List<String> missingProperties = new ArrayList<String>();
if ( expectedProperties != null ) {
for ( String expected : expectedProperties ) {
if ( !propertyKeys.containsKey( expected ) ) {
missingProperties.add( expected );
}
}
}
assertThat( unexpectedProperties ).as( "Unexpected properties for node [" + node.getAlias() + "]" ).isEmpty();
assertThat( missingProperties ).as( "Missing properties for node [" + node.getAlias() + "]" ).isEmpty();
}
public static void assertThatExists(Neo4jTestHelperDelegate delegate, DatastoreProvider datastoreProvider,
RelationshipsChainForGraphAssertions relationship) throws Exception {
Object result = delegate.findRelationshipStartNode( datastoreProvider, relationship );
assertThat( result ).as( "Relationships not found, Looked for " + relationship.toCypher() + " with parameters: " + relationship.getParams() )
.isNotNull();
}
}