package com.buschmais.xo.neo4j.test.mapping;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasItem;
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.mapping.composite.A;
import com.buschmais.xo.neo4j.test.mapping.composite.Enumeration;
@RunWith(Parameterized.class)
public class EnumPropertyMappingTest extends AbstractNeo4jXOManagerTest {
public EnumPropertyMappingTest(XOUnit xoUnit) {
super(xoUnit);
}
@Parameterized.Parameters
public static Collection<Object[]> getXOUnits() throws URISyntaxException {
return xoUnits(A.class);
}
@Test
public void enumerationLabel() {
XOManager xoManager = getXoManager();
xoManager.currentTransaction().begin();
A a = xoManager.create(A.class);
a.setEnumeration(Enumeration.FIRST);
xoManager.currentTransaction().commit();
xoManager.currentTransaction().begin();
assertThat(a.getEnumeration(), equalTo(Enumeration.FIRST));
assertThat(executeQuery("MATCH (a:A) WHERE a.enumeration='FIRST' RETURN a").getColumn("a"), hasItem(a));
a.setEnumeration(Enumeration.SECOND);
xoManager.currentTransaction().commit();
xoManager.currentTransaction().begin();
assertThat(a.getEnumeration(), equalTo(Enumeration.SECOND));
assertThat(executeQuery("MATCH (a:A) WHERE a.enumeration='SECOND' RETURN a").getColumn("a"), hasItem(a));
a.setEnumeration(null);
xoManager.currentTransaction().commit();
xoManager.currentTransaction().begin();
assertThat(a.getEnumeration(), equalTo(null));
xoManager.currentTransaction().commit();
}
@Test
public void enumerationProperty() {
XOManager xoManager = getXoManager();
xoManager.currentTransaction().begin();
A a = xoManager.create(A.class);
a.setMappedEnumeration(Enumeration.FIRST);
xoManager.currentTransaction().commit();
xoManager.currentTransaction().begin();
assertThat(a.getMappedEnumeration(), equalTo(Enumeration.FIRST));
assertThat(executeQuery("MATCH (a:A) WHERE a.MAPPED_ENUMERATION='FIRST' RETURN a").getColumn("a"), hasItem(a));
a.setMappedEnumeration(Enumeration.SECOND);
xoManager.currentTransaction().commit();
xoManager.currentTransaction().begin();
assertThat(a.getMappedEnumeration(), equalTo(Enumeration.SECOND));
assertThat(executeQuery("MATCH (a:A) WHERE a.MAPPED_ENUMERATION='SECOND' RETURN a").getColumn("a"), hasItem(a));
a.setMappedEnumeration(null);
xoManager.currentTransaction().commit();
xoManager.currentTransaction().begin();
assertThat(a.getMappedEnumeration(), equalTo(null));
xoManager.currentTransaction().commit();
}
}