Add test only - Add test for L2 cache with orphanRemoval

This commit is contained in:
rob bygrave
2018-11-30 22:42:36 +13:00
parent fcffa92c55
commit a2ce17aec0
2 changed files with 47 additions and 1 deletions
@@ -1,12 +1,16 @@
package org.tests.model.orphanremoval;
import io.ebean.annotation.Cache;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Version;
import java.util.List;
@Cache
@Entity
public class OrpMaster {
@@ -15,7 +19,8 @@ public class OrpMaster {
String name;
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL)
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL)//, mappedBy = "master")
@JoinColumn(name = "master_id", referencedColumnName = "id")
List<OrpDetail> details;
@Version
@@ -33,4 +33,45 @@ public class TestOrphanRemoveO2M extends BaseTestCase {
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("delete from orp_detail where id=?");
}
@Test
public void testCacheUse() {
// add test data first
OrpMaster m0 = new OrpMaster("m2", "master2");
m0.getDetails().add(new OrpDetail("d21", "d1"));
m0.getDetails().add(new OrpDetail("d22", "d2"));
Ebean.save(m0);
OrpMaster m1 = Ebean.find(OrpMaster.class, "m2");
m1.getDetails().clear();
m1.getDetails().add(new OrpDetail("d23", "d3"));
Ebean.save(m1);
m1 = Ebean.find(OrpMaster.class, "m2");
// Expect only one.
assertThat(m1.getDetails()).hasSize(1);
assertThat(m1.getDetails()).extracting("id").containsExactly("d23");
m1.getDetails().clear();
m1.getDetails().add(new OrpDetail("d24", "d4"));
m1.getDetails().add(new OrpDetail("d25", "d5"));
Ebean.save(m1);
m1 = Ebean.find(OrpMaster.class, "m2");
assertThat(m1.getDetails()).hasSize(2);
assertThat(m1.getDetails()).extracting("id").containsExactly("d24", "d25");
m1 = Ebean.find(OrpMaster.class)
.setId("m2")
.setUseCache(false)
.findOne();
// Expect only one.
assertThat(m1.getDetails()).hasSize(2);
assertThat(m1.getDetails()).extracting("id").containsExactly("d24", "d25");
}
}