Add Wobu TestCacheDelete test case for cached beans

This commit is contained in:
wbuchner
2014-04-24 02:42:28 +12:00
committed by Rob Bygrave
parent 89f7d2bace
commit 696dabc658
3 changed files with 94 additions and 1 deletions
@@ -0,0 +1,41 @@
package com.avaje.tests.cache;
import org.junit.Assert;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.tests.model.basic.OCachedBean;
import com.avaje.tests.model.basic.OCachedBeanChild;
/**
* Test class testing deleting/invalidating of cached beans
*/
public class TestCacheDelete extends BaseTestCase {
/**
* When deleting a cached entity all entities with a referenced OneToMany relation must also be invalidated!
*/
@Test
public void testCacheDeleteOneToMany() {
// arrange
OCachedBeanChild child = new OCachedBeanChild();
OCachedBeanChild child2 = new OCachedBeanChild();
OCachedBean cachedBean = new OCachedBean();
cachedBean.getChildren().add(child);
cachedBean.getChildren().add(child2);
Ebean.save(cachedBean);
// ensure cache has been populated
Ebean.find(OCachedBeanChild.class, child.getId());
child2 = Ebean.find(OCachedBeanChild.class, child2.getId());
cachedBean = Ebean.find(OCachedBean.class, cachedBean.getId());
// act
Ebean.delete(child2);
// assert
Assert.assertTrue(Ebean.find(OCachedBean.class, cachedBean.getId()).getChildren().size() == 1);
}
}
@@ -3,9 +3,11 @@ package com.avaje.tests.model.basic;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.avaje.ebean.annotation.CacheStrategy;
@@ -22,10 +24,13 @@ public class OCachedBean {
Long id;
String name;
@ManyToMany
List<Country> countries = new ArrayList<Country>();
@OneToMany(mappedBy = "cachedBean", cascade = CascadeType.ALL)
List<OCachedBeanChild> children = new ArrayList<OCachedBeanChild>();
public Long getId() {
return id;
}
@@ -49,4 +54,12 @@ public class OCachedBean {
public void setCountries(List<Country> countries) {
this.countries = countries;
}
public List<OCachedBeanChild> getChildren() {
return children;
}
public void setChildren(List<OCachedBeanChild> children) {
this.children = children;
}
}
@@ -0,0 +1,39 @@
package com.avaje.tests.model.basic;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.avaje.ebean.annotation.CacheStrategy;
/**
* Cached bean for testing caching implementation, especially relations.
*/
@CacheStrategy
@Entity
@Table(name = "o_cached_bean_child")
public class OCachedBeanChild {
@Id
Long id;
@ManyToOne
OCachedBean cachedBean;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public OCachedBean getCachedBean() {
return cachedBean;
}
public void setCachedBean(OCachedBean cachedBean) {
this.cachedBean = cachedBean;
}
}