Test case for changing OneToMany collection by editing target bean.

This commit is contained in:
Ryszard Trojnacki
2019-09-10 20:43:31 +02:00
parent 98a80295fe
commit 13429daddc
+41 -7
View File
@@ -12,13 +12,7 @@ import io.ebeaninternal.server.cache.CachedManyIds;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.tests.model.basic.Contact;
import org.tests.model.basic.Country;
import org.tests.model.basic.Customer;
import org.tests.model.basic.OCachedBean;
import org.tests.model.basic.Order;
import org.tests.model.basic.OrderDetail;
import org.tests.model.basic.ResetBasicData;
import org.tests.model.basic.*;
import java.util.ArrayList;
import java.util.List;
@@ -146,6 +140,46 @@ public class TestCacheCollectionIds extends BaseTestCase {
assertTrue(cachedManyIds.getIdList().contains("AU"));
}
@Test
public void testChangingCollectionByEditingConnectedBean() {
ResetBasicData.reset();
OCachedBean cachedBean = new OCachedBean();
cachedBean.setName("hello");
Ebean.save(cachedBean);
awaitL2Cache();
OCachedBean dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(0, dummyToLoad.getChildren().size());
OCachedBeanChild child1=new OCachedBeanChild();
child1.setCachedBean(cachedBean);
Ebean.insert(child1);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(1, dummyToLoad.getChildren().size());
OCachedBeanChild child2=new OCachedBeanChild();
child2.setCachedBean(cachedBean);
Ebean.insert(child2);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(2, dummyToLoad.getChildren().size());
Ebean.delete(child2);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(1, dummyToLoad.getChildren().size());
Ebean.delete(child1);
awaitL2Cache();
dummyToLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
assertEquals(0, dummyToLoad.getChildren().size());
Ebean.delete(cachedBean);
}
/**
* When updating a ManyToMany relations also the collection cache must be updated.