Merge pull request #3 from markusgeiss/develop
fixed bug while closing an unused product
diff --git a/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java b/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java
index 6617bc6..d757ad2 100644
--- a/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java
+++ b/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java
@@ -25,6 +25,7 @@
import io.mifos.deposit.api.v1.client.DepositAccountManager;
import io.mifos.deposit.service.DepositAccountManagementConfiguration;
import io.mifos.deposit.service.internal.service.helper.AccountingService;
+import io.mifos.deposit.service.internal.service.helper.RhythmService;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
@@ -76,6 +77,9 @@
@MockBean
AccountingService accountingServiceSpy;
+ @MockBean
+ RhythmService rhythmService;
+
private AutoUserContext autoUserContext;
AbstractDepositAccountManagementTest() {
diff --git a/component-test/src/main/java/io/mifos/deposit/TestProductDefinition.java b/component-test/src/main/java/io/mifos/deposit/TestProductDefinition.java
index 7125390..9d2e417 100644
--- a/component-test/src/main/java/io/mifos/deposit/TestProductDefinition.java
+++ b/component-test/src/main/java/io/mifos/deposit/TestProductDefinition.java
@@ -145,6 +145,35 @@
Assert.assertTrue(super.eventRecorder.wait(EventConstants.DELETE_PRODUCT_DEFINITION, productDefinition.getIdentifier()));
}
+ @Test
+ public void shouldDeleteProductDefinitionEvenWhenActed() throws Exception {
+ final ProductDefinition productDefinition = Fixture.productDefinition();
+
+ super.depositAccountManager.create(productDefinition);
+
+ super.eventRecorder.wait(EventConstants.POST_PRODUCT_DEFINITION, productDefinition.getIdentifier());
+
+ final ProductDefinitionCommand activateProduct = new ProductDefinitionCommand();
+ activateProduct.setAction(ProductDefinitionCommand.Action.ACTIVATE.name());
+ activateProduct.setNote(RandomStringUtils.randomAlphanumeric(2048));
+
+ super.depositAccountManager.process(productDefinition.getIdentifier(), activateProduct);
+
+ super.eventRecorder.wait(EventConstants.POST_PRODUCT_DEFINITION_COMMAND, productDefinition.getIdentifier());
+
+ final ProductDefinitionCommand deactivateProduct = new ProductDefinitionCommand();
+ deactivateProduct.setAction(ProductDefinitionCommand.Action.DEACTIVATE.name());
+ deactivateProduct.setNote(RandomStringUtils.randomAlphanumeric(2048));
+
+ super.depositAccountManager.process(productDefinition.getIdentifier(), deactivateProduct);
+
+ super.eventRecorder.wait(EventConstants.POST_PRODUCT_DEFINITION_COMMAND, productDefinition.getIdentifier());
+
+ super.depositAccountManager.deleteProductDefinition(productDefinition.getIdentifier());
+
+ Assert.assertTrue(super.eventRecorder.wait(EventConstants.DELETE_PRODUCT_DEFINITION, productDefinition.getIdentifier()));
+ }
+
@Test(expected = ProductDefinitionValidationException.class)
public void shouldNotDeleteProductDefinitionInstanceExists() throws Exception {
final ProductDefinition productDefinition = Fixture.productDefinition();
diff --git a/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java b/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
index 6eae234..42208d7 100644
--- a/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
+++ b/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
@@ -38,7 +38,7 @@
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
- @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_definition_id", nullable = false)
private ProductDefinitionEntity productDefinition;
@Column(name = "a_action", nullable = false)