package com.buschmais.xo.neo4j.test.query; import static java.util.Arrays.asList; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import java.net.URISyntaxException; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.neo4j.graphdb.ConstraintViolationException; import com.buschmais.xo.api.XOException; 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.Neo4jDatabase; import com.buschmais.xo.neo4j.test.query.composite.B; @RunWith(Parameterized.class) public class UniqueTest extends AbstractNeo4jXOManagerTest { public UniqueTest(XOUnit xoUnit) { super(xoUnit); } @Parameterized.Parameters public static Collection<Object[]> getXOUnits() throws URISyntaxException { return xoUnits(asList(Neo4jDatabase.MEMORY), asList(B.class)); } @Test(expected = ConstraintViolationException.class) public void denyDuplicates() { XOManager xoManager = getXoManager(); xoManager.currentTransaction().begin(); B a1 = xoManager.create(B.class); a1.setValue("A1"); B a2_1 = xoManager.create(B.class); a2_1.setValue("A2"); B a2_2 = xoManager.create(B.class); a2_2.setValue("A2"); xoManager.currentTransaction().commit(); } @Test public void index() { XOManager xoManager = getXoManager(); xoManager.currentTransaction().begin(); B a1 = xoManager.create(B.class); a1.setValue("A1"); B a2_1 = xoManager.create(B.class); a2_1.setValue("A2"); xoManager.currentTransaction().commit(); xoManager.currentTransaction().begin(); B a = xoManager.find(B.class, "A1").getSingleResult(); assertThat(a, equalTo(a1)); try { xoManager.find(B.class, "A3").getSingleResult(); fail("Expecting a " + XOException.class.getName()); } catch (XOException e) { } xoManager.currentTransaction().commit(); } }