package io.ebeaninternal.server.deploy; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.EbeanServer; import io.ebean.bean.EntityBean; import io.ebean.bean.EntityBeanIntercept; import io.ebeaninternal.api.SpiEbeanServer; import org.tests.model.basic.Customer; import org.tests.model.basic.Order; import org.tests.model.composite.RCustomer; import org.tests.model.composite.RCustomerKey; import org.junit.Test; import java.sql.Timestamp; import java.util.Map; import static org.junit.Assert.*; public class TestBeanDescriptorHasIdProperty extends BaseTestCase { SpiEbeanServer spiServer; public TestBeanDescriptorHasIdProperty() { EbeanServer server = Ebean.getServer(null); spiServer = (SpiEbeanServer) server; } @Test public void testHasId() { BeanDescriptor<Order> beanDescriptor = spiServer.getBeanDescriptor(Order.class); assertNotNull(beanDescriptor.getIdProperty()); assertEquals("id", beanDescriptor.getIdProperty().getName()); assertNotNull(beanDescriptor.getVersionProperty()); assertEquals("updtime", beanDescriptor.getVersionProperty().getName()); Order order = new Order(); assertFalse(beanDescriptor.hasIdValue(entityBean(order))); assertFalse(beanDescriptor.hasVersionProperty(getIntercept(order))); order.setId(23); order.setUpdtime(new Timestamp(System.currentTimeMillis())); assertTrue(beanDescriptor.hasIdValue(entityBean(order))); assertTrue(beanDescriptor.hasVersionProperty(getIntercept(order))); } @Test public void testIsReference() { BeanDescriptor<Customer> beanDescriptor = spiServer.getBeanDescriptor(Customer.class); Customer order = new Customer(); EntityBeanIntercept ebi = getIntercept(order); assertFalse(beanDescriptor.hasIdPropertyOnly(ebi)); order.setId(23); assertTrue(beanDescriptor.hasIdPropertyOnly(ebi)); order.setName("custName"); assertFalse(beanDescriptor.hasIdPropertyOnly(ebi)); } @Test public void test_getIdForJson() { BeanDescriptor<Order> orderDesc = spiServer.getBeanDescriptor(Order.class); Order order = new Order(); order.setId(42); assertEquals(42, orderDesc.getIdForJson(order)); assertEquals(42, orderDesc.convertIdFromJson(42)); assertEquals(42, orderDesc.convertIdFromJson("42")); assertEquals(42, orderDesc.convertIdFromJson(42L)); RCustomerKey key = new RCustomerKey(); key.setCompany("comp"); key.setName("fred"); RCustomer rCustomer = new RCustomer(); rCustomer.setKey(key); BeanDescriptor<RCustomer> rcustDesc = spiServer.getBeanDescriptor(RCustomer.class); Map<String, Object> idForJson = (Map<String, Object>) rcustDesc.getIdForJson(rCustomer); assertEquals("comp", idForJson.get("company")); assertEquals("fred", idForJson.get("name")); assertEquals(2, idForJson.size()); RCustomerKey keyVal = (RCustomerKey) rcustDesc.convertIdFromJson(idForJson); assertEquals("comp", keyVal.getCompany()); assertEquals("fred", keyVal.getName()); } private EntityBean entityBean(Object bean) { return (EntityBean) bean; } private EntityBeanIntercept getIntercept(Object bean) { return ((EntityBean) bean)._ebean_getIntercept(); } }