package com.buschmais.xo.neo4j.test.relation.typed; import static org.hamcrest.Matchers.equalTo; 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.*; @RunWith(Parameterized.class) public class RelationSubclassingTest extends AbstractNeo4jXOManagerTest { public RelationSubclassingTest(XOUnit xoUnit) { super(xoUnit); } @Parameterized.Parameters public static Collection<Object[]> getXOUnits() throws URISyntaxException { return xoUnits(C.class, D.class, TypeA.class, TypeB.class); } @Test public void testRelationSubclassing() { XOManager xoManager = getXoManager(); xoManager.currentTransaction().begin(); C c = xoManager.create(C.class); D d1 = xoManager.create(D.class); D d2 = xoManager.create(D.class); BaseType relation1 = xoManager.create(c, TypeA.class, d1); relation1.setVersion(1); BaseType relation2 = xoManager.create(c, TypeB.class, d2); relation2.setVersion(2); xoManager.currentTransaction().commit(); xoManager.currentTransaction().begin(); assertThat(c.getTypeA().getVersion(), equalTo(relation1.getVersion())); assertThat(c.getTypeB().getVersion(), equalTo(relation2.getVersion())); assertThat(relation1.getC(), equalTo(c)); assertThat(relation1.getD(), equalTo(d1)); assertThat(relation2.getC(), equalTo(c)); assertThat(relation2.getD(), equalTo(d2)); xoManager.currentTransaction().commit(); } }