From 444b848c2217f272cc9b167a3e1ca2c54323388a Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Wed, 13 Apr 2016 19:36:26 +1200 Subject: [PATCH] #648 - Test that does not reproduce this issue --- .../TestCacheInterceptSaveWhenLazyLoaded.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/java/com/avaje/tests/cache/TestCacheInterceptSaveWhenLazyLoaded.java 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(); + } + + } +}