From 3e3f3c35e759926267cdb4a027c22c31e301deea Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Mon, 8 Apr 2019 17:21:23 +0200 Subject: [PATCH] add test case to show delete with version --- .../java/org/tests/cascade/RelDetail.java | 44 ++++++++++ .../java/org/tests/cascade/RelMaster.java | 48 +++++++++++ .../tests/cascade/TestMasterDetailDelete.java | 83 +++++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 src/test/java/org/tests/cascade/RelDetail.java create mode 100644 src/test/java/org/tests/cascade/RelMaster.java create mode 100644 src/test/java/org/tests/cascade/TestMasterDetailDelete.java diff --git a/src/test/java/org/tests/cascade/RelDetail.java b/src/test/java/org/tests/cascade/RelDetail.java new file mode 100644 index 000000000..170f194b0 --- /dev/null +++ b/src/test/java/org/tests/cascade/RelDetail.java @@ -0,0 +1,44 @@ +package org.tests.cascade; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Version; + +@Entity +public class RelDetail { + + @Id + Long id; + + String name; + + @Version + int version; + + @OneToMany(cascade = CascadeType.ALL, mappedBy = "detail") + private List masterRel; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getMasterRel() { + return masterRel; + } +} diff --git a/src/test/java/org/tests/cascade/RelMaster.java b/src/test/java/org/tests/cascade/RelMaster.java new file mode 100644 index 000000000..37409306a --- /dev/null +++ b/src/test/java/org/tests/cascade/RelMaster.java @@ -0,0 +1,48 @@ +package org.tests.cascade; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Version; + +@Entity +public class RelMaster { + + @Id + Long id; + + String name; + + @Version + int version; + + @ManyToOne(cascade = CascadeType.REMOVE) + private RelDetail detail; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public RelDetail getDetail() { + return detail; + } + + public void setDetail(RelDetail detail) { + this.detail = detail; + } + + +} diff --git a/src/test/java/org/tests/cascade/TestMasterDetailDelete.java b/src/test/java/org/tests/cascade/TestMasterDetailDelete.java new file mode 100644 index 000000000..7ff1477cc --- /dev/null +++ b/src/test/java/org/tests/cascade/TestMasterDetailDelete.java @@ -0,0 +1,83 @@ +package org.tests.cascade; + +import io.ebean.BaseTestCase; +import io.ebean.Transaction; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; + +import org.junit.Test; + +public class TestMasterDetailDelete extends BaseTestCase { + + @Test + public void testDeleteOneMasterTxn() { + try (Transaction txn = server().beginTransaction()) { + RelDetail rd = new RelDetail(); + rd.setName("test1"); + server().save(rd); + + RelMaster rm = new RelMaster(); + rm.setDetail(rd); + server().save(rm); + + List lst = server().find(RelDetail.class).where().eq("name", "test1").findList(); + assertThat(lst).hasSize(1); + + server().find(RelMaster.class).delete(); + + lst = server().find(RelDetail.class).where().eq("name", "test1").findList(); + assertThat(lst).isEmpty(); + } // no commit + } + + + @Test + public void testDeleteMultiMasterTxn() { + try (Transaction txn = server().beginTransaction()) { + RelDetail rd = new RelDetail(); + rd.setName("test2"); + server().save(rd); + + RelMaster rm1 = new RelMaster(); + rm1.setDetail(rd); + server().save(rm1); + + RelMaster rm2 = new RelMaster(); + rm2.setDetail(rd); + server().save(rm2); + + List lst = server().find(RelDetail.class).where().eq("name", "test2").findList(); + assertThat(lst).hasSize(1); + + server().find(RelMaster.class).delete(); + + lst = server().find(RelDetail.class).where().eq("name", "test2").findList(); + assertThat(lst).isEmpty(); + } // no commit + } + + @Test + public void testDeleteMultiMasterPlain() { + RelDetail rd = new RelDetail(); + rd.setName("test3"); + server().save(rd); + + RelMaster rm1 = new RelMaster(); + rm1.setDetail(rd); + server().save(rm1); + + RelMaster rm2 = new RelMaster(); + rm2.setDetail(rd); + server().save(rm2); + + List lst = server().find(RelDetail.class).where().eq("name", "test3").findList(); + assertThat(lst).hasSize(1); + + server().find(RelMaster.class).delete(); + + lst = server().find(RelDetail.class).where().eq("name", "test3").findList(); + assertThat(lst).isEmpty(); + } +}