package com.buschmais.xo.neo4j.test.relation.typed; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.core.IsCollectionContaining.hasItems; import static org.junit.Assert.assertThat; import java.net.URISyntaxException; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import com.buschmais.xo.api.XOManager; import com.buschmais.xo.api.bootstrap.XOUnit; import com.buschmais.xo.neo4j.test.AbstractNeo4jXOManagerTest; import com.buschmais.xo.neo4j.test.relation.typed.composite.TreeNode; import com.buschmais.xo.neo4j.test.relation.typed.composite.TreeNodeRelation; @RunWith(Parameterized.class) public class TreeTest extends AbstractNeo4jXOManagerTest { public TreeTest(XOUnit xoUnit) { super(xoUnit); } @Parameterized.Parameters public static Collection<Object[]> getXOUnits() throws URISyntaxException { return xoUnits(TreeNode.class, TreeNodeRelation.class); } @Test public void tree() { XOManager xoManager = getXoManager(); xoManager.currentTransaction().begin(); TreeNode parent = xoManager.create(TreeNode.class); parent.setName("parent"); TreeNode child1 = xoManager.create(TreeNode.class); child1.setName("child 1"); TreeNode child2 = xoManager.create(TreeNode.class); child2.setName("child 2"); TreeNodeRelation relation1 = xoManager.create(parent, TreeNodeRelation.class, child1); relation1.setVersion(1); TreeNodeRelation relation2 = xoManager.create(parent, TreeNodeRelation.class, child2); relation2.setVersion(1); xoManager.currentTransaction().commit(); xoManager.currentTransaction().begin(); assertThat(parent.getParent(), equalTo(null)); assertThat(parent.getChildren(), hasItems(relation1, relation2)); assertThat(relation1.getParent(), equalTo(parent)); assertThat(relation1.getChild(), equalTo(child1)); assertThat(relation2.getParent(), equalTo(parent)); assertThat(relation2.getChild(), equalTo(child2)); assertThat(child1.getParent(), equalTo(relation1)); assertThat(child1.getChildren().isEmpty(), equalTo(true)); assertThat(child2.getParent(), equalTo(relation2)); assertThat(child2.getChildren().isEmpty(), equalTo(true)); } }