diff --git a/src/test/java/com/avaje/tests/cache/TestCacheInterceptSaveWhenLazyLoaded.java b/src/test/java/com/avaje/tests/cache/TestCacheInterceptSaveWhenLazyLoaded.java new file mode 100644 index 000000000..6a73e32b8 --- /dev/null +++ b/src/test/java/com/avaje/tests/cache/TestCacheInterceptSaveWhenLazyLoaded.java @@ -0,0 +1,64 @@ +package com.avaje.tests.cache; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.ebean.Ebean; +import com.avaje.tests.model.basic.Customer; +import com.avaje.tests.model.basic.Order; +import org.junit.Test; + +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +public class TestCacheInterceptSaveWhenLazyLoaded extends BaseTestCase { + + @Test + public void test() { + + Customer customer = new Customer(); + customer.setName("daCustomer"); + Ebean.save(customer); + + Order order = new Order(); + order.setStatus(Order.Status.NEW); + order.setCustomer(customer); + Ebean.save(order); + + Ebean.beginTransaction(); + try { + + Order foundOrder = Ebean.find(Order.class) + .where().eq("id", order.getId()) + .findUnique(); + +// QueryIterator iterate = Ebean.find(Order.class) +// //.setUseCache(true) +// .where().eq("id", order.getId()) +// .findIterate(); +// +// iterate.hasNext(); +// Order foundOrder = iterate.next(); + + foundOrder.setStatus(Order.Status.APPROVED); + assertTrue(Ebean.getBeanState(foundOrder).isDirty()); + + Customer foundCustomer = Ebean.find(Customer.class) + .where().eq("id", customer.getId()) + .findUnique(); + + // the foundOrder is in this list + foundCustomer.getOrders().size(); + + Order order1 = foundCustomer.getOrders().get(0); + + assertSame(foundOrder, order1); + assertTrue(Ebean.getBeanState(foundOrder).isDirty()); + + Ebean.delete(order1); + Ebean.delete(customer); + + } finally { + Ebean.endTransaction(); + } + + } +}