package org.tests.basic.type; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.SqlQuery; import io.ebean.SqlRow; import org.tests.model.basic.EBasic; import org.tests.model.basic.EBasic.Status; import org.tests.model.basic.EBasicEnumId; import org.tests.model.basic.EBasicEnumInt; import org.junit.Assert; import org.junit.Test; import java.util.Optional; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class TestEnumValueAnnotation extends BaseTestCase { @Test public void test() { EBasic b = new EBasic(); b.setName("Banana"); b.setStatus(Status.NEW); Ebean.save(b); SqlQuery q = Ebean.createSqlQuery("select * from e_basic where id = :id"); q.setParameter("id", b.getId()); SqlRow sqlRow = q.findOne(); String strStatus = sqlRow.getString("status"); assertEquals("N", strStatus); EBasic b2 = new EBasic(); b2.setName("Apple"); b2.setStatus(Status.NEW); Ebean.save(b2); EBasic b3 = Ebean.find(EBasic.class, b2.getId()); b3.setName("Orange"); Ebean.save(b3); } @Test public void testAsId() { EBasicEnumId b = new EBasicEnumId(); b.setName("Banana"); b.setStatus(EBasicEnumId.Status.NEW); Ebean.save(b); SqlQuery q = Ebean.createSqlQuery("select * from e_basic_enum_id where status = :status"); q.setParameter("status", b.getStatus()); SqlRow sqlRow = q.findOne(); String strStatus = sqlRow.getString("status"); assertEquals("N", strStatus); try { b = Ebean.find(EBasicEnumId.class, b.getStatus()); } catch (java.lang.IllegalArgumentException iae) { Assert.fail("The use of an enum as id should work : " + iae.getLocalizedMessage()); } assertEquals(EBasicEnumId.Status.NEW, b.getStatus()); } @Test public void testDbEnumValueInt() { EBasicEnumInt b = new EBasicEnumInt(); b.setName("Banana"); b.setStatus(EBasicEnumInt.Status.NEW); Ebean.save(b); SqlQuery q = Ebean.createSqlQuery("select * from e_basic_eni where id = :id"); q.setParameter("id", b.getId()); Optional<SqlRow> sqlRow = q.findOneOrEmpty(); sqlRow.ifPresent(sqlRow1 -> { Integer intStatus = sqlRow1.getInteger("status"); assertEquals(Integer.valueOf(1), intStatus); }); EBasicEnumInt b2 = Ebean.find(EBasicEnumInt.class) .where().eq("id", b.getId()) .eq("status", EBasicEnumInt.Status.NEW) .findUnique(); assertNotNull(b2); } }