package org.tests.basic;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.cache.ServerCache;
import org.tests.model.basic.Customer;
import org.tests.model.basic.Order;
import org.tests.model.basic.Order.Status;
import org.tests.model.basic.ResetBasicData;
import org.junit.Assert;
import org.junit.Test;
import java.sql.Date;
public class TestBeanReferenceRefresh extends BaseTestCase {
@Test
public void testMe() {
ResetBasicData.reset();
ServerCache beanCache = Ebean.getServerCacheManager().getBeanCache(Order.class);
beanCache.clear();
Order order = Ebean.getReference(Order.class, 1);
Assert.assertTrue(Ebean.getBeanState(order).isReference());
// invoke lazy loading
Date orderDate = order.getOrderDate();
Assert.assertNotNull(orderDate);
Customer customer = order.getCustomer();
Assert.assertNotNull(customer);
Assert.assertFalse(Ebean.getBeanState(order).isReference());
Assert.assertNotNull(order.getStatus());
Assert.assertNotNull(order.getDetails());
Assert.assertNull(Ebean.getBeanState(order).getLoadedProps());
Status status = order.getStatus();
Assert.assertTrue(status != Order.Status.SHIPPED);
order.setStatus(Order.Status.SHIPPED);
Ebean.refresh(order);
Status statusRefresh = order.getStatus();
Assert.assertEquals(status, statusRefresh);
}
}