ADD: testcase for broken lazyload

This commit is contained in:
Roland Praml
2021-01-11 11:50:05 +01:00
parent 7e48f7c8eb
commit b7feb62ecd
3 changed files with 164 additions and 0 deletions
@@ -0,0 +1,78 @@
package org.tests.cache;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.tests.model.cache.M2MCacheChild;
import org.tests.model.cache.M2MCacheMaster;
import io.ebean.BaseTestCase;
import io.ebean.DB;
public class TestM2MCache extends BaseTestCase {
@Test
public void testM2MWithCache() throws Exception {
M2MCacheChild cld = new M2MCacheChild();
cld.setName("test");
cld.setId(1);
DB.save(cld);
M2MCacheMaster cfg = new M2MCacheMaster();
cfg.setId(42);
cfg.getSet1().add(cld);
cfg.getSet2().add(cld);
DB.save(cfg);
// find master and access set1 + set2.
// lazy load something from set1
M2MCacheMaster cfg1 = DB.find(M2MCacheMaster.class, 42);
cfg1.getSet1().size();
cfg1.getSet2().size();
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
// do it again
cfg1 = DB.find(M2MCacheMaster.class, 42);
cfg1.getSet1().size();
cfg1.getSet2().size();
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
// do it again
cfg1 = DB.find(M2MCacheMaster.class, 42);
cfg1.getSet1().size();
cfg1.getSet2().size();
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
}
@Test
public void testM2MWithCacheMinimal() throws Exception {
M2MCacheChild cld = new M2MCacheChild();
cld.setName("test");
cld.setId(2);
DB.save(cld);
M2MCacheMaster cfg = new M2MCacheMaster();
cfg.setId(43);
cfg.getSet1().add(cld);
cfg.getSet2().add(cld);
DB.save(cfg);
DB.find(M2MCacheMaster.class, 43);
M2MCacheMaster cfg1 = DB.find(M2MCacheMaster.class, 43);
cfg1.getSet2().size();
cfg1 = DB.find(M2MCacheMaster.class, 43);
cfg1.getSet1().size();
cfg1.getSet2().size();
assertThat(cfg1.getSet1().iterator().next().getName()).isEqualTo("test");
}
}
@@ -0,0 +1,33 @@
package org.tests.model.cache;
import javax.persistence.Entity;
import javax.persistence.Id;
import io.ebean.annotation.Cache;
@Entity
@Cache(enableQueryCache = true, enableBeanCache = true)
public class M2MCacheChild {
@Id
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@@ -0,0 +1,53 @@
package org.tests.model.cache;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import io.ebean.annotation.Cache;
@Entity
@Cache(enableQueryCache = true, enableBeanCache = true)
public class M2MCacheMaster {
@Id
private Integer id;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "m2mcache_set1")
private Set<M2MCacheChild> set1 = new LinkedHashSet<>();
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "m2mcache_set2")
private Set<M2MCacheChild> set2 = new LinkedHashSet<>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Set<M2MCacheChild> getSet1() {
return set1;
}
public void setSet1(Set<M2MCacheChild> set1) {
this.set1 = set1;
}
public Set<M2MCacheChild> getSet2() {
return set2;
}
public void setSet2(Set<M2MCacheChild> set2) {
this.set2 = set2;
}
}