From faa0f1f64443391867e75755caf7e179edd0ea66 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Thu, 24 Aug 2023 21:38:51 +1200 Subject: [PATCH] Test case for 3185 --- .../java/org/example/domain/Beschikking.java | 28 ++++++++++++ .../example/domain/MeldingAanvangProduct.java | 35 +++++++++++++++ .../org/example/domain/MutatieProduct.java | 25 +++++++++++ .../org/example/domain/ProductToegewezen.java | 43 +++++++++++++++++++ .../TestDeleteCascadeCascadeCasade.java | 40 +++++++++++++++++ 5 files changed, 171 insertions(+) create mode 100644 src/test/java/org/example/domain/Beschikking.java create mode 100644 src/test/java/org/example/domain/MeldingAanvangProduct.java create mode 100644 src/test/java/org/example/domain/MutatieProduct.java create mode 100644 src/test/java/org/example/domain/ProductToegewezen.java create mode 100644 src/test/java/org/example/domain/TestDeleteCascadeCascadeCasade.java diff --git a/src/test/java/org/example/domain/Beschikking.java b/src/test/java/org/example/domain/Beschikking.java new file mode 100644 index 0000000..c4500d9 --- /dev/null +++ b/src/test/java/org/example/domain/Beschikking.java @@ -0,0 +1,28 @@ +package org.example.domain; + +import javax.persistence.*; +import java.util.Set; + +@Entity +@Table(name = "jw_beschikking") +public class Beschikking { + + @Id + long id; + + final String b; + @OneToMany(mappedBy = "beschikking", cascade = CascadeType.ALL) + private Set toegewezenProducten; + + public Beschikking(String b) { + this.b = b; + } + + public String b() { + return b; + } + + public Set toegewezenProducten() { + return toegewezenProducten; + } +} diff --git a/src/test/java/org/example/domain/MeldingAanvangProduct.java b/src/test/java/org/example/domain/MeldingAanvangProduct.java new file mode 100644 index 0000000..2b98c92 --- /dev/null +++ b/src/test/java/org/example/domain/MeldingAanvangProduct.java @@ -0,0 +1,35 @@ +package org.example.domain; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "jw_melding_aanvang_product") +public class MeldingAanvangProduct { + + @Id + long id; + + final String map; + + @ManyToOne(optional = false) + ProductToegewezen toegewezenProduct; + + public MeldingAanvangProduct(String map) { + this.map = map; + } + + public String map() { + return map; + } + + public ProductToegewezen toegewezenProduct() { + return toegewezenProduct; + } + + public void setToegewezenProduct(ProductToegewezen toegewezenProduct) { + this.toegewezenProduct = toegewezenProduct; + } +} diff --git a/src/test/java/org/example/domain/MutatieProduct.java b/src/test/java/org/example/domain/MutatieProduct.java new file mode 100644 index 0000000..0c793e3 --- /dev/null +++ b/src/test/java/org/example/domain/MutatieProduct.java @@ -0,0 +1,25 @@ +package org.example.domain; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "jw_mutatie_product") +public class MutatieProduct { + + @Id + long id; + + final String aprod; + + @ManyToOne(optional = false) + ProductToegewezen toegewezenProduct; + + public MutatieProduct(String aprod) { + this.aprod = aprod; + } + + +} diff --git a/src/test/java/org/example/domain/ProductToegewezen.java b/src/test/java/org/example/domain/ProductToegewezen.java new file mode 100644 index 0000000..63e57d1 --- /dev/null +++ b/src/test/java/org/example/domain/ProductToegewezen.java @@ -0,0 +1,43 @@ +package org.example.domain; + +import javax.persistence.*; +import java.util.Set; + +@Entity +@Table(name = "jw_product_toegewezen") +public class ProductToegewezen { + + @Id + long id; + final String tg; + + @ManyToOne(optional = false) + Beschikking beschikking; + + @OneToMany(mappedBy = "toegewezenProduct", cascade = CascadeType.ALL) + private Set meldingenAanvangProduct; + + @OneToMany(mappedBy = "toegewezenProduct", cascade = CascadeType.ALL) + private Set mutatiesProduct; + + public ProductToegewezen(String tg) { + this.tg = tg; + } + + public Beschikking beschikking() { + return beschikking; + } + + public void setBeschikking(Beschikking beschikking) { + this.beschikking = beschikking; + } + + public Set meldingenAanvangProduct() { + return meldingenAanvangProduct; + } + + public Set mutatiesProduct() { + return mutatiesProduct; + } + +} diff --git a/src/test/java/org/example/domain/TestDeleteCascadeCascadeCasade.java b/src/test/java/org/example/domain/TestDeleteCascadeCascadeCasade.java new file mode 100644 index 0000000..46604e2 --- /dev/null +++ b/src/test/java/org/example/domain/TestDeleteCascadeCascadeCasade.java @@ -0,0 +1,40 @@ +package org.example.domain; + +import io.ebean.DB; +import io.ebean.test.LoggedSql; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class TestDeleteCascadeCascadeCasade { + + @Test + void deleteCascade() { + + ProductToegewezen pt = new ProductToegewezen("pt"); + pt.meldingenAanvangProduct().add(new MeldingAanvangProduct("map")); + pt.mutatiesProduct().add(new MutatieProduct("mp")); + Beschikking b = new Beschikking("b"); + b.toegewezenProducten().add(pt); + + DB.save(b); + + LoggedSql.start(); + + DB.delete(b); + + List sql = LoggedSql.stop(); + + assertThat(sql).hasSize(8); + assertThat(sql.get(0)).contains("select t0.id from jw_product_toegewezen t0 where beschikking_id=?"); + assertThat(sql.get(1)).contains("delete from jw_melding_aanvang_product where (toegewezen_product_id) "); // in | any + assertThat(sql.get(2)).contains(" -- bind(Array[1]"); + assertThat(sql.get(3)).contains("delete from jw_mutatie_product where (toegewezen_product_id)"); // in | any + assertThat(sql.get(4)).contains(" -- bind(Array[1]"); + assertThat(sql.get(5)).contains("delete from jw_product_toegewezen where id "); // in | any + assertThat(sql.get(6)).contains(" -- bind(Array[1]"); + assertThat(sql.get(7)).contains("delete from jw_beschikking where id=?"); + } +}