Merge pull request #1191 from chandrikamohith/TestCase

MIFOSX-1717,MIFOSX-1662 Test case for account number preferences and Cod...
This commit is contained in:
Vishwas Babu A J
2014-12-15 18:31:29 -08:00
12 changed files with 880 additions and 653 deletions
+6 -6
View File
@@ -3567,7 +3567,7 @@ Request Body:
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
</tr>
<tr class=alt>
<td>rejectDate, rejectReasonId<br>
<td>rejectionDate, rejectionReasonId<br>
</td>
</tr>
</table>
@@ -3579,8 +3579,8 @@ Request Body:
Content-Type: application/json
Request Body:
{
"rejectDate":"28 November 2014",
"rejectReasonId":16,
"rejectionDate":"28 November 2014",
"rejectionReasonId":16,
"locale":"en",
"dateFormat":"dd MMMM yyyy"
}
@@ -3605,7 +3605,7 @@ Request Body:
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
</tr>
<tr class=alt>
<td>withdrawDate, withdrawReasonId<br>
<td>withdrawalDate, withdrawalReasonId<br>
</td>
</tr>
</table>
@@ -3616,8 +3616,8 @@ Request Body:
Content-Type: application/json
Request Body:
{
"withdrawDate":"28 November 2014",
"withdrawReasonId":17,
"withdrawalDate":"28 November 2014",
"withdrawalReasonId":17,
"locale":"en",
"dateFormat":"dd MMMM yyyy"
}
@@ -1,28 +1,27 @@
package org.mifosplatform.integrationtests;
import java.util.ArrayList;
import java.util.HashMap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mifosplatform.integrationtests.common.ClientHelper;
import org.mifosplatform.integrationtests.common.CommonConstants;
import org.mifosplatform.integrationtests.common.Utils;
import org.mifosplatform.integrationtests.common.loans.LoanApplicationTestBuilder;
import org.mifosplatform.integrationtests.common.loans.LoanProductTestBuilder;
import org.mifosplatform.integrationtests.common.loans.LoanTransactionHelper;
import org.mifosplatform.integrationtests.common.savings.SavingsAccountHelper;
import org.mifosplatform.integrationtests.common.savings.SavingsProductHelper;
import org.mifosplatform.integrationtests.common.system.AccountNumberPreferencesHelper;
import org.mifosplatform.integrationtests.common.system.CodeHelper;
import com.jayway.restassured.builder.RequestSpecBuilder;
import com.jayway.restassured.builder.ResponseSpecBuilder;
import com.jayway.restassured.http.ContentType;
import com.jayway.restassured.specification.RequestSpecification;
import com.jayway.restassured.specification.ResponseSpecification;
import java.util.ArrayList;
import java.util.HashMap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mifosplatform.integrationtests.common.ClientHelper;
import org.mifosplatform.integrationtests.common.CommonConstants;
import org.mifosplatform.integrationtests.common.loans.LoanApplicationTestBuilder;
import org.mifosplatform.integrationtests.common.loans.LoanProductTestBuilder;
import org.mifosplatform.integrationtests.common.loans.LoanTransactionHelper;
import org.mifosplatform.integrationtests.common.savings.SavingsProductHelper;
import org.mifosplatform.integrationtests.common.savings.SavingsAccountHelper;
import org.mifosplatform.integrationtests.common.system.AccountNumberPreferencesHelper;
import org.mifosplatform.integrationtests.common.system.CodeHelper;
import org.mifosplatform.integrationtests.common.Utils;
public class AccountNumberPreferencesTest {
private RequestSpecification requestSpec;
@@ -35,13 +34,13 @@ public class AccountNumberPreferencesTest {
private Integer loanId;
private Integer savingsProductId;
private Integer savingsId;
private final String loanPrincipalAmount = "100000.00";
private final String numberOfRepayments = "12";
private final String interestRatePerPeriod = "18";
private final String dateString = "4 September 2014";
private final String minBalanceForInterestCalculation = null;
private final String minRequiredBalance = null;
private final String enforceMinRequiredBalance = "false";
private String loanPrincipalAmount = "100000.00";
private String numberOfRepayments = "12";
private String interestRatePerPeriod = "18";
private String dateString = "4 September 2014";
private String minBalanceForInterestCalculation = null;
private String minRequiredBalance = null;
private String enforceMinRequiredBalance = "false";
private LoanTransactionHelper loanTransactionHelper;
private SavingsAccountHelper savingsAccountHelper;
private AccountNumberPreferencesHelper accountNumberPreferencesHelper;
@@ -54,22 +53,32 @@ public class AccountNumberPreferencesTest {
private Integer clientTypeCodeId;
private String clientCodeValueName;
private Integer clientCodeValueId;
private final String clientTypeName = "CLIENT_TYPE";
private final String officeName = "OFFICE_NAME";
private final String loanShortName = "LOAN_PRODUCT_SHORT_NAME";
private final String savingsShortName = "SAVINGS_PRODUCT_SHORT_NAME";
private String clientTypeName = "CLIENT_TYPE";
private String officeName = "OFFICE_NAME";
private String loanShortName = "LOAN_PRODUCT_SHORT_NAME";
private String savingsShortName = "SAVINGS_PRODUCT_SHORT_NAME";
@Before
public void setup() {
Utils.initializeRESTAssured();
this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
this.responseValidationError = new ResponseSpecBuilder().expectStatusCode(400).build();
this.responseNotFoundError = new ResponseSpecBuilder().expectStatusCode(404).build();
this.responseForbiddenError = new ResponseSpecBuilder().expectStatusCode(403).build();
this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
this.accountNumberPreferencesHelper = new AccountNumberPreferencesHelper(this.requestSpec, this.responseSpec);
this.requestSpec = new RequestSpecBuilder().setContentType(
ContentType.JSON).build();
this.requestSpec
.header("Authorization",
"Basic "
+ Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
.build();
this.responseValidationError = new ResponseSpecBuilder()
.expectStatusCode(400).build();
this.responseNotFoundError = new ResponseSpecBuilder()
.expectStatusCode(404).build();
this.responseForbiddenError = new ResponseSpecBuilder()
.expectStatusCode(403).build();
this.loanTransactionHelper = new LoanTransactionHelper(
this.requestSpec, this.responseSpec);
this.accountNumberPreferencesHelper = new AccountNumberPreferencesHelper(
this.requestSpec, this.responseSpec);
}
@@ -117,21 +126,26 @@ public class AccountNumberPreferencesTest {
}
private void deleteAllAccountNumberPreferences() {
ArrayList<HashMap<String, Object>> preferenceIds = this.accountNumberPreferencesHelper.getAllAccountNumberPreferences();
ArrayList<HashMap<String, Object>> preferenceIds = this.accountNumberPreferencesHelper
.getAllAccountNumberPreferences();
/* Deletion of valid account preference ID */
for (HashMap<String, Object> preferenceId : preferenceIds) {
Integer id = (Integer) preferenceId.get("id");
HashMap<String, Object> delResponse = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(id, this.responseSpec,
"");
System.out.println("Successfully deleted account number preference (ID: " + delResponse.get("resourceId") + ")");
HashMap<String, Object> delResponse = this.accountNumberPreferencesHelper
.deleteAccountNumberPreference(id, this.responseSpec, "");
System.out
.println("Successfully deleted account number preference (ID: "
+ delResponse.get("resourceId") + ")");
}
/* Deletion of invalid account preference ID should fail */
System.out
.println("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE WITH INVALID ID------------------------------------------");
HashMap<String, Object> deletionError = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(10,
this.responseNotFoundError, "");
Assert.assertEquals("error.msg.resource.not.found", deletionError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
HashMap<String, Object> deletionError = this.accountNumberPreferencesHelper
.deleteAccountNumberPreference(10, this.responseNotFoundError,
"");
Assert.assertEquals("error.msg.resource.not.found",
deletionError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
}
private void validateDefaultAccountNumberGeneration() {
@@ -148,67 +162,98 @@ public class AccountNumberPreferencesTest {
}
private void createAccountNumberPreference() {
this.clientAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createClientAccountNumberPreference(
this.responseSpec, "resourceId");
System.out.println("Successfully created account number preferences for Client (ID: " + this.clientAccountNumberPreferenceId);
this.clientAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
.createClientAccountNumberPreference(this.responseSpec,
"resourceId");
System.out
.println("Successfully created account number preferences for Client (ID: "
+ this.clientAccountNumberPreferenceId);
this.loanAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createLoanAccountNumberPreference(
this.responseSpec, "resourceId");
System.out.println("Successfully created account number preferences for Loan (ID: " + this.loanAccountNumberPreferenceId);
this.loanAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
.createLoanAccountNumberPreference(this.responseSpec,
"resourceId");
System.out
.println("Successfully created account number preferences for Loan (ID: "
+ this.loanAccountNumberPreferenceId);
this.savingsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createSavingsAccountNumberPreference(
this.responseSpec, "resourceId");
System.out.println("Successfully created account number preferences for Savings (ID: " + this.savingsAccountNumberPreferenceId);
this.savingsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
.createSavingsAccountNumberPreference(this.responseSpec,
"resourceId");
System.out
.println("Successfully created account number preferences for Savings (ID: "
+ this.savingsAccountNumberPreferenceId);
this.accountNumberPreferencesHelper.verifyCreationOfAccountNumberPreferences(this.clientAccountNumberPreferenceId,
this.loanAccountNumberPreferenceId, this.savingsAccountNumberPreferenceId, this.responseSpec, this.requestSpec);
this.accountNumberPreferencesHelper
.verifyCreationOfAccountNumberPreferences(
this.clientAccountNumberPreferenceId,
this.loanAccountNumberPreferenceId,
this.savingsAccountNumberPreferenceId,
this.responseSpec, this.requestSpec);
this.createAccountNumberPreferenceInvalidData("1000", "1001");
this.createAccountNumberPreferenceDuplicateData("1", "101");
}
private void createAccountNumberPreferenceDuplicateData(final String accountType, final String prefixType) {
private void createAccountNumberPreferenceDuplicateData(
final String accountType, final String prefixType) {
/* Creating account Preference with duplicate data should fail */
System.out
.println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH DUPLICATE DATA------------------------------------------");
HashMap<String, Object> creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData(
this.responseForbiddenError, accountType, prefixType, "");
HashMap<String, Object> creationError = this.accountNumberPreferencesHelper
.createAccountNumberPreferenceWithInvalidData(
this.responseForbiddenError, accountType, prefixType,
"");
Assert.assertEquals("error.msg.account.number.format.duplicate.account.type",
Assert.assertEquals(
"error.msg.account.number.format.duplicate.account.type",
creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
}
private void createAccountNumberPreferenceInvalidData(final String accountType, final String prefixType) {
private void createAccountNumberPreferenceInvalidData(
final String accountType, final String prefixType) {
/* Creating account Preference with invalid data should fail */
System.out
.println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
HashMap<String, Object> creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData(
this.responseValidationError, accountType, prefixType, "");
HashMap<String, Object> creationError = this.accountNumberPreferencesHelper
.createAccountNumberPreferenceWithInvalidData(
this.responseValidationError, accountType, prefixType,
"");
if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals(
"validation.msg.accountNumberFormat.accountType.is.not.within.expected.range")) {
Assert.assertEquals("validation.msg.accountNumberFormat.accountType.is.not.within.expected.range",
creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
} else if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals(
"validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations")) {
Assert.assertEquals("validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations",
creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
if (creationError
.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)
.equals("validation.msg.accountNumberFormat.accountType.is.not.within.expected.range")) {
Assert.assertEquals(
"validation.msg.accountNumberFormat.accountType.is.not.within.expected.range",
creationError
.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
} else if (creationError
.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)
.equals("validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations")) {
Assert.assertEquals(
"validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations",
creationError
.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
}
}
private void updateAccountNumberPreference() {
HashMap<String, Object> accountNumberPreferences = this.accountNumberPreferencesHelper.updateAccountNumberPreference(
this.clientAccountNumberPreferenceId, "101", this.responseSpec, "");
HashMap<String, Object> accountNumberPreferences = this.accountNumberPreferencesHelper
.updateAccountNumberPreference(
this.clientAccountNumberPreferenceId, "101",
this.responseSpec, "");
System.out.println("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID "
System.out
.println("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID "
+ accountNumberPreferences.get("resourceId"));
this.accountNumberPreferencesHelper.verifyUpdationOfAccountNumberPreferences((Integer) accountNumberPreferences.get("resourceId"),
this.accountNumberPreferencesHelper
.verifyUpdationOfAccountNumberPreferences(
(Integer) accountNumberPreferences.get("resourceId"),
this.responseSpec, this.requestSpec);
/* Update invalid account preference id should fail */
@@ -216,21 +261,28 @@ public class AccountNumberPreferencesTest {
.println("---------------------------------UPDATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
/* Invalid Account Type */
HashMap<String, Object> updationError = this.accountNumberPreferencesHelper.updateAccountNumberPreference(5, "101",
HashMap<String, Object> updationError = this.accountNumberPreferencesHelper
.updateAccountNumberPreference(9999, "101",
this.responseNotFoundError, "");
if (updationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals("error.msg.resource.not.found")) {
Assert.assertEquals("error.msg.resource.not.found", updationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
if (updationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)
.equals("error.msg.resource.not.found")) {
Assert.assertEquals("error.msg.resource.not.found", updationError
.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
}
/* Invalid Prefix Type */
HashMap<String, Object> updationError1 = this.accountNumberPreferencesHelper.updateAccountNumberPreference(
this.clientAccountNumberPreferenceId, "103", this.responseValidationError, "");
HashMap<String, Object> updationError1 = this.accountNumberPreferencesHelper
.updateAccountNumberPreference(
this.clientAccountNumberPreferenceId, "103",
this.responseValidationError, "");
Assert.assertEquals("validation.msg.validation.errors.exist", updationError1.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
Assert.assertEquals("validation.msg.validation.errors.exist",
updationError1.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
}
private void createAndValidateClientEntity(Boolean isAccountPreferenceSetUp) {
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
.build();
if (isAccountPreferenceSetUp) {
this.createAndValidateClientBasedOnAccountPreference();
} else {
@@ -239,48 +291,64 @@ public class AccountNumberPreferencesTest {
}
private void createAndValidateClientWithoutAccountPreference() {
this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
this.clientId = ClientHelper.createClient(this.requestSpec,
this.responseSpec);
Assert.assertNotNull(this.clientId);
String clientAccountNo = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "accountNo");
String clientAccountNo = (String) ClientHelper.getClient(requestSpec,
responseSpec, this.clientId.toString(), "accountNo");
validateAccountNumberLengthAndStartsWithPrefix(clientAccountNo, null);
}
private void createAndValidateClientBasedOnAccountPreference() {
final String codeName = "ClientType";
String clientAccountNo = null;
String clientPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
this.clientAccountNumberPreferenceId, "prefixType.value");
String clientPrefixName = (String) this.accountNumberPreferencesHelper
.getAccountNumberPreference(
this.clientAccountNumberPreferenceId,
"prefixType.value");
if (clientPrefixName.equals(this.clientTypeName)) {
/* Retrieve Code id for the Code "ClientType" */
HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName, "");
HashMap<String, Object> code = CodeHelper
.getCodeByName(this.requestSpec, this.responseSpec,
codeName);
this.clientTypeCodeId = (Integer) code.get("id");
/* Retrieve/Create Code Values for the Code "ClientType" */
HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(this.clientTypeCodeId, this.requestSpec,
this.responseSpec, "");
HashMap<String, Object> codeValue = CodeHelper
.retrieveOrCreateCodeValue(this.clientTypeCodeId,
this.requestSpec, this.responseSpec);
this.clientCodeValueName = (String) codeValue.get("name");
this.clientCodeValueId = (Integer) codeValue.get("id");
/* Create Client with Client Type */
this.clientId = ClientHelper.createClientForAccountPreference(this.requestSpec, this.responseSpec, this.clientCodeValueId,
"clientId");
this.clientId = ClientHelper.createClientForAccountPreference(
this.requestSpec, this.responseSpec,
this.clientCodeValueId, "clientId");
Assert.assertNotNull(clientId);
clientAccountNo = (String) ClientHelper.getClient(this.requestSpec, this.responseSpec, this.clientId.toString(), "accountNo");
this.validateAccountNumberLengthAndStartsWithPrefix(clientAccountNo, this.clientCodeValueName);
clientAccountNo = (String) ClientHelper.getClient(this.requestSpec,
this.responseSpec, this.clientId.toString(), "accountNo");
this.validateAccountNumberLengthAndStartsWithPrefix(
clientAccountNo, this.clientCodeValueName);
} else if (clientPrefixName.equals(this.officeName)) {
this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
this.clientId = ClientHelper.createClient(this.requestSpec,
this.responseSpec);
Assert.assertNotNull(clientId);
clientAccountNo = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "accountNo");
String officeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "officeName");
this.validateAccountNumberLengthAndStartsWithPrefix(clientAccountNo, officeName);
clientAccountNo = (String) ClientHelper.getClient(requestSpec,
responseSpec, this.clientId.toString(), "accountNo");
String officeName = (String) ClientHelper.getClient(requestSpec,
responseSpec, this.clientId.toString(), "officeName");
this.validateAccountNumberLengthAndStartsWithPrefix(
clientAccountNo, officeName);
}
}
private void validateAccountNumberLengthAndStartsWithPrefix(final String accountNumber, final String prefix) {
private void validateAccountNumberLengthAndStartsWithPrefix(
final String accountNumber, final String prefix) {
if (prefix != null) {
Assert.assertEquals(accountNumber.length(), prefix.length() + 9);
Assert.assertTrue(accountNumber.startsWith(prefix));
@@ -290,56 +358,90 @@ public class AccountNumberPreferencesTest {
}
private void createLoanProduct() {
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
.build();
System.out.println("---------------------------------CREATING LOAN PRODUCT------------------------------------------");
System.out
.println("---------------------------------CREATING LOAN PRODUCT------------------------------------------");
final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(loanPrincipalAmount)
.withNumberOfRepayments(numberOfRepayments).withinterestRatePerPeriod(interestRatePerPeriod)
final String loanProductJSON = new LoanProductTestBuilder()
.withPrincipal(loanPrincipalAmount)
.withNumberOfRepayments(numberOfRepayments)
.withinterestRatePerPeriod(interestRatePerPeriod)
.withInterestRateFrequencyTypeAsYear().build(null);
this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
System.out.println("Successfully created loan product (ID: " + this.loanProductId + ")");
this.loanProductId = this.loanTransactionHelper
.getLoanProductId(loanProductJSON);
System.out.println("Successfully created loan product (ID: "
+ this.loanProductId + ")");
}
private void createAndValidateLoanEntity(Boolean isAccountPreferenceSetUp) {
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
.build();
System.out.println("---------------------------------NEW LOAN APPLICATION------------------------------------------");
System.out
.println("---------------------------------NEW LOAN APPLICATION------------------------------------------");
final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount)
.withLoanTermFrequency(numberOfRepayments).withLoanTermFrequencyAsMonths().withNumberOfRepayments(numberOfRepayments)
.withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments()
.withInterestCalculationPeriodTypeAsDays().withInterestRatePerPeriod(interestRatePerPeriod).withLoanTermFrequencyAsMonths()
.withSubmittedOnDate(dateString).withExpectedDisbursementDate(dateString).withPrincipalGrace("2").withInterestGrace("2")
.build(this.clientId.toString(), this.loanProductId.toString(), null);
final String loanApplicationJSON = new LoanApplicationTestBuilder()
.withPrincipal(loanPrincipalAmount)
.withLoanTermFrequency(numberOfRepayments)
.withLoanTermFrequencyAsMonths()
.withNumberOfRepayments(numberOfRepayments)
.withRepaymentEveryAfter("1")
.withRepaymentFrequencyTypeAsMonths()
.withAmortizationTypeAsEqualInstallments()
.withInterestCalculationPeriodTypeAsDays()
.withInterestRatePerPeriod(interestRatePerPeriod)
.withLoanTermFrequencyAsMonths()
.withSubmittedOnDate(dateString)
.withExpectedDisbursementDate(dateString)
.withPrincipalGrace("2")
.withInterestGrace("2")
.build(this.clientId.toString(), this.loanProductId.toString(),
null);
this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
String loanAccountNo = (String) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, this.loanId,
"accountNo");
String loanAccountNo = (String) this.loanTransactionHelper
.getLoanDetail(this.requestSpec, this.responseSpec,
this.loanId, "accountNo");
if (isAccountPreferenceSetUp) {
String loanPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
this.loanAccountNumberPreferenceId, "prefixType.value");
String loanPrefixName = (String) this.accountNumberPreferencesHelper
.getAccountNumberPreference(
this.loanAccountNumberPreferenceId,
"prefixType.value");
if (loanPrefixName.equals(this.officeName)) {
String loanOfficeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "officeName");
this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, loanOfficeName);
String loanOfficeName = (String) ClientHelper.getClient(
requestSpec, responseSpec, this.clientId.toString(),
"officeName");
this.validateAccountNumberLengthAndStartsWithPrefix(
loanAccountNo, loanOfficeName);
} else if (loanPrefixName.equals(this.loanShortName)) {
String loanShortName = (String) this.loanTransactionHelper.getLoanProductDetail(this.requestSpec, this.responseSpec,
this.loanProductId, "shortName");
this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, loanShortName);
String loanShortName = (String) this.loanTransactionHelper
.getLoanProductDetail(this.requestSpec,
this.responseSpec, this.loanProductId,
"shortName");
this.validateAccountNumberLengthAndStartsWithPrefix(
loanAccountNo, loanShortName);
}
System.out.println("SUCCESSFULLY CREATED LOAN APPLICATION BASED ON ACCOUNT PREFERENCES (ID: " + this.loanId + ")");
System.out
.println("SUCCESSFULLY CREATED LOAN APPLICATION BASED ON ACCOUNT PREFERENCES (ID: "
+ this.loanId + ")");
} else {
this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, null);
System.out.println("SUCCESSFULLY CREATED LOAN APPLICATION (ID: " + loanId + ")");
this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo,
null);
System.out.println("SUCCESSFULLY CREATED LOAN APPLICATION (ID: "
+ loanId + ")");
}
}
private void createSavingsProduct() {
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
.build();
System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
System.out
.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
@@ -351,41 +453,59 @@ public class AccountNumberPreferencesTest {
//
.withInterestCalculationPeriodTypeAsDailyBalance()
//
.withMinBalanceForInterestCalculation(minBalanceForInterestCalculation)
.withMinBalanceForInterestCalculation(
minBalanceForInterestCalculation)
//
.withMinRequiredBalance(minRequiredBalance).withEnforceMinRequiredBalance(enforceMinRequiredBalance)
.withMinimumOpenningBalance(this.MINIMUM_OPENING_BALANCE).build();
this.savingsProductId = SavingsProductHelper.createSavingsProduct(savingsProductJSON, this.requestSpec, this.responseSpec);
System.out.println("Sucessfully created savings product (ID: " + this.savingsProductId + ")");
.withMinRequiredBalance(minRequiredBalance)
.withEnforceMinRequiredBalance(enforceMinRequiredBalance)
.withMinimumOpenningBalance(this.MINIMUM_OPENING_BALANCE)
.build();
this.savingsProductId = SavingsProductHelper.createSavingsProduct(
savingsProductJSON, this.requestSpec, this.responseSpec);
System.out.println("Sucessfully created savings product (ID: "
+ this.savingsProductId + ")");
}
private void createAndValidateSavingsEntity(Boolean isAccountPreferenceSetUp) {
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
.build();
this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec,
this.responseSpec);
this.savingsId = this.savingsAccountHelper
.applyForSavingsApplication(this.clientId, this.savingsProductId, ACCOUNT_TYPE_INDIVIDUAL);
this.savingsId = this.savingsAccountHelper.applyForSavingsApplication(
this.clientId, this.savingsProductId, ACCOUNT_TYPE_INDIVIDUAL);
String savingsAccountNo = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "accountNo");
String savingsAccountNo = (String) this.savingsAccountHelper
.getSavingsAccountDetail(this.savingsId, "accountNo");
if (isAccountPreferenceSetUp) {
String savingsPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
this.savingsAccountNumberPreferenceId, "prefixType.value");
String savingsPrefixName = (String) this.accountNumberPreferencesHelper
.getAccountNumberPreference(
this.savingsAccountNumberPreferenceId,
"prefixType.value");
if (savingsPrefixName.equals(this.officeName)) {
String savingsOfficeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(),
String savingsOfficeName = (String) ClientHelper.getClient(
requestSpec, responseSpec, this.clientId.toString(),
"officeName");
this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, savingsOfficeName);
this.validateAccountNumberLengthAndStartsWithPrefix(
savingsAccountNo, savingsOfficeName);
} else if (savingsPrefixName.equals(this.savingsShortName)) {
String loanShortName = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "shortName");
this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, loanShortName);
String loanShortName = (String) this.savingsAccountHelper
.getSavingsAccountDetail(this.savingsId, "shortName");
this.validateAccountNumberLengthAndStartsWithPrefix(
savingsAccountNo, loanShortName);
}
System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION BASED ON ACCOUNT PREFERENCES (ID: " + this.loanId + ")");
System.out
.println("SUCCESSFULLY CREATED SAVINGS APPLICATION BASED ON ACCOUNT PREFERENCES (ID: "
+ this.loanId + ")");
} else {
this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, null);
System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID: " + this.savingsId + ")");
this.validateAccountNumberLengthAndStartsWithPrefix(
savingsAccountNo, null);
System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID: "
+ this.savingsId + ")");
}
}
}
@@ -9,6 +9,7 @@ import java.util.HashMap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mifosplatform.integrationtests.common.ClientHelper;
import org.mifosplatform.integrationtests.common.Utils;
@@ -33,7 +34,7 @@ public class ClientTest {
}
// @Test
@Test
public void testClientStatus() {
this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
final Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
@@ -8,7 +8,7 @@ package org.mifosplatform.integrationtests.common;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import java.util.List;
import org.mifosplatform.integrationtests.common.system.CodeHelper;
import com.google.gson.Gson;
import com.jayway.restassured.specification.RequestSpecification;
@@ -60,7 +60,7 @@ public class ClientHelper {
final String officeId = "1";
System.out.println("---------------------------------CREATING A CLIENT BASED ON ACCOUNT PREFERENCE---------------------------------------------");
return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestClientWithClientTypeAsJSON(activationDate, officeId, clientType.toString()),
"clientId");
jsonAttributeToGetBack);
}
public static Object assignStaffToClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
@@ -141,10 +141,21 @@ public class ClientHelper {
private String getCloseClientAsJSON() {
final HashMap<String, String> map = new HashMap<>();
/* Retrieve Code id for the Code "ClientClosureReason" */
String codeName = "ClientClosureReason";
HashMap<String,Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
Integer clientClosureCodeId = (Integer)code.get("id");
/* Retrieve/Create Code Values for the Code "ClientClosureReason" */
HashMap<String,Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientClosureCodeId,this.requestSpec,this.responseSpec);
String closureReasonId = (String)codeValue.get("id");
map.put("closureReasonId", closureReasonId);
map.put("locale", CommonConstants.locale);
map.put("dateFormat", CommonConstants.dateFormat);
map.put("closureDate", CREATED_DATE_PLUS_ONE);
map.put("closureReasonId", "12");
String clientJson = new Gson().toJson(map);
System.out.println(clientJson);
return clientJson;
@@ -166,8 +177,8 @@ public class ClientHelper {
final HashMap<String, String> map = new HashMap<>();
map.put("locale", CommonConstants.locale);
map.put("dateFormat", CommonConstants.dateFormat);
map.put("rejectDate", CREATED_DATE_PLUS_ONE);
map.put("rejectReasonId", "15");
map.put("rejectionDate", CREATED_DATE_PLUS_ONE);
map.put("rejectionReasonId", "15");
String clientJson = new Gson().toJson(map);
System.out.println(clientJson);
return clientJson;
@@ -189,8 +200,8 @@ public class ClientHelper {
final HashMap<String, String> map = new HashMap<>();
map.put("locale", CommonConstants.locale);
map.put("dateFormat", CommonConstants.dateFormat);
map.put("withdrawDate", CREATED_DATE_PLUS_ONE);
map.put("withdrawReasonId", "17");
map.put("withdrawalDate", CREATED_DATE_PLUS_ONE);
map.put("withdrawalReasonId", "17");
String clientJson = new Gson().toJson(map);
System.out.println(clientJson);
return clientJson;
@@ -92,9 +92,9 @@ public class LoanTransactionHelper {
}
public Object getLoanProductDetail(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final Integer loanProductId,
final String param) {
final String jsonAttributeToGetBack) {
final String URL = "/mifosng-provider/api/v1/loanproducts/" + loanProductId + "?associations=all&" + Utils.TENANT_IDENTIFIER;
return Utils.performServerGet(requestSpec, responseSpec, URL, param);
return Utils.performServerGet(requestSpec, responseSpec, URL, jsonAttributeToGetBack);
}
public ArrayList getLoanCharges(final Integer loanId) {
@@ -1,6 +1,5 @@
package org.mifosplatform.integrationtests.common.system;
import java.util.ArrayList;
import java.util.HashMap;
@@ -12,106 +11,153 @@ import com.jayway.restassured.specification.ResponseSpecification;
public class AccountNumberPreferencesHelper {
private final RequestSpecification requestSpec;
private final ResponseSpecification responseSpec;
private static final String ACCOUNT_NUMBER_FORMATS_REQUEST_URL = "/mifosng-provider/api/v1/accountnumberformats";
public AccountNumberPreferencesHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
public AccountNumberPreferencesHelper(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec) {
this.requestSpec = requestSpec;
this.responseSpec = responseSpec;
}
public Object createClientAccountNumberPreference(ResponseSpecification responseSpec,String jsonAttributeToGetBack) {
System.out.println("---------------------------------CREATING CLIENT ACCOUNT NUMBER PREFERENCE------------------------------------------");
public Object createClientAccountNumberPreference(
ResponseSpecification responseSpec, String jsonAttributeToGetBack) {
System.out
.println("---------------------------------CREATING CLIENT ACCOUNT NUMBER PREFERENCE------------------------------------------");
final String requestJSON = new AccountNumberPreferencesTestBuilder().clientBuild();
final String requestJSON = new AccountNumberPreferencesTestBuilder()
.clientBuild();
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER;
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?"
+ Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL, requestJSON, jsonAttributeToGetBack);
return Utils.performServerPost(this.requestSpec, responseSpec, URL,
requestJSON, jsonAttributeToGetBack);
}
public Object createLoanAccountNumberPreference(ResponseSpecification responseSpec,String jsonAttributeToGetBack) {
System.out.println("---------------------------------CREATING LOAN ACCOUNT NUMBER PREFERENCE------------------------------------------");
public Object createLoanAccountNumberPreference(
ResponseSpecification responseSpec, String jsonAttributeToGetBack) {
System.out
.println("---------------------------------CREATING LOAN ACCOUNT NUMBER PREFERENCE------------------------------------------");
final String requestJSON = new AccountNumberPreferencesTestBuilder().loanBuild();
final String requestJSON = new AccountNumberPreferencesTestBuilder()
.loanBuild();
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL, requestJSON, jsonAttributeToGetBack);
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?"
+ Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL,
requestJSON, jsonAttributeToGetBack);
}
public Object createSavingsAccountNumberPreference(ResponseSpecification responseSpec,String jsonAttributeToGetBack) {
System.out.println("---------------------------------CREATING SAVINGS ACCOUNT NUMBER PREFERENCE------------------------------------------");
public Object createSavingsAccountNumberPreference(
ResponseSpecification responseSpec, String jsonAttributeToGetBack) {
System.out
.println("---------------------------------CREATING SAVINGS ACCOUNT NUMBER PREFERENCE------------------------------------------");
final String requestJSON = new AccountNumberPreferencesTestBuilder().savingsBuild();
final String requestJSON = new AccountNumberPreferencesTestBuilder()
.savingsBuild();
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL, requestJSON, jsonAttributeToGetBack);
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?"
+ Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL,
requestJSON, jsonAttributeToGetBack);
}
public HashMap<String, Object> createAccountNumberPreferenceWithInvalidData(ResponseSpecification responseSpec,
String accountType,String prefixType,String jsonAttributeToGetBack){
public HashMap<String, Object> createAccountNumberPreferenceWithInvalidData(
ResponseSpecification responseSpec, String accountType,
String prefixType, String jsonAttributeToGetBack) {
final String requestJSON = new AccountNumberPreferencesTestBuilder().invalidDataBuild(accountType,prefixType);
final String requestJSON = new AccountNumberPreferencesTestBuilder()
.invalidDataBuild(accountType, prefixType);
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL, requestJSON, jsonAttributeToGetBack);
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?"
+ Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(this.requestSpec, responseSpec, URL,
requestJSON, jsonAttributeToGetBack);
}
public HashMap<String,Object> updateAccountNumberPreference(final Integer accountNumberFormatId,final String prefixType,ResponseSpecification responseSpec,String jsonAttributeToGetBack) {
public HashMap<String, Object> updateAccountNumberPreference(
final Integer accountNumberFormatId, final String prefixType,
ResponseSpecification responseSpec, String jsonAttributeToGetBack) {
final String requestJSON = new AccountNumberPreferencesTestBuilder().updatePrefixType(prefixType);
final String requestJSON = new AccountNumberPreferencesTestBuilder()
.updatePrefixType(prefixType);
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER;
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER;
return Utils.performServerPut(this.requestSpec, responseSpec, URL, requestJSON, jsonAttributeToGetBack);
return Utils.performServerPut(this.requestSpec, responseSpec, URL,
requestJSON, jsonAttributeToGetBack);
}
public HashMap<String,Object> deleteAccountNumberPreference(final Integer accountNumberFormatId,ResponseSpecification responseSpec,String jsonAttributeToGetBack) {
public HashMap<String, Object> deleteAccountNumberPreference(
final Integer accountNumberFormatId,
ResponseSpecification responseSpec, String jsonAttributeToGetBack) {
System.out.println("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE------------------------------------------");
System.out
.println("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE------------------------------------------");
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER;
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER;
return Utils.performServerDelete(this.requestSpec, responseSpec, URL,jsonAttributeToGetBack);
return Utils.performServerDelete(this.requestSpec, responseSpec, URL,
jsonAttributeToGetBack);
}
public Object getAccountNumberPreference(final Integer accountNumberFormatId, final String jsonAttributeToGetBack) {
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER;
public Object getAccountNumberPreference(
final Integer accountNumberFormatId,
final String jsonAttributeToGetBack) {
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER;
return Utils.performServerGet(requestSpec, responseSpec, URL, jsonAttributeToGetBack);
return Utils.performServerGet(requestSpec, responseSpec, URL,
jsonAttributeToGetBack);
}
public ArrayList<HashMap<String, Object>> getAllAccountNumberPreferences() {
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER;
final ArrayList<HashMap<String,Object>> response = Utils.performServerGet(requestSpec, responseSpec, URL, "");
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?"
+ Utils.TENANT_IDENTIFIER;
final ArrayList<HashMap<String, Object>> response = Utils
.performServerGet(requestSpec, responseSpec, URL, "");
return response;
}
public void verifyCreationOfAccountNumberPreferences(final Integer clientAccountNumberPreferenceId,
final Integer loanAccountNumberPreferenceId,final Integer savingsAccountNumberPreferenceId,
ResponseSpecification responseSpec,RequestSpecification requestSpec) {
public void verifyCreationOfAccountNumberPreferences(
final Integer clientAccountNumberPreferenceId,
final Integer loanAccountNumberPreferenceId,
final Integer savingsAccountNumberPreferenceId,
ResponseSpecification responseSpec, RequestSpecification requestSpec) {
final String clientURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + clientAccountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER;
final String clientURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ clientAccountNumberPreferenceId + "?"
+ Utils.TENANT_IDENTIFIER;
Utils.performServerGet(requestSpec, responseSpec, clientURL, "id");
final String loanURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + loanAccountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER;
final String loanURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ loanAccountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER;
Utils.performServerGet(requestSpec, responseSpec, loanURL, "id");
final String savingsURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + savingsAccountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER;
final String savingsURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ savingsAccountNumberPreferenceId + "?"
+ Utils.TENANT_IDENTIFIER;
Utils.performServerGet(requestSpec, responseSpec, savingsURL, "id");
}
public void verifyUpdationOfAccountNumberPreferences(final Integer accountNumberPreferenceId,
ResponseSpecification responseSpec,RequestSpecification requestSpec){
public void verifyUpdationOfAccountNumberPreferences(
final Integer accountNumberPreferenceId,
ResponseSpecification responseSpec, RequestSpecification requestSpec) {
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER;
final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/"
+ accountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER;
Utils.performServerGet(requestSpec, responseSpec, URL, "id");
}
@@ -5,7 +5,6 @@ import java.util.HashMap;
import com.google.gson.Gson;
public class AccountNumberPreferencesTestBuilder {
private String clientAccountType = "1";
private String clientPrefixType = "101";
private String loanAccountType = "2";
@@ -20,33 +19,35 @@ public class AccountNumberPreferencesTestBuilder {
return new Gson().toJson(map);
}
public String loanBuild(){
public String loanBuild() {
final HashMap<String, Object> map = new HashMap<>();
map.put("accountType", loanAccountType);
map.put("prefixType", loanPrefixType);
return new Gson().toJson(map);
}
public String savingsBuild(){
public String savingsBuild() {
final HashMap<String, Object> map = new HashMap<>();
map.put("accountType", savingsAccountType);
map.put("prefixType", savingsPrefixType);
return new Gson().toJson(map);
}
public String invalidDataBuild(String accountType,String prefixType){
public String invalidDataBuild(String accountType, String prefixType) {
final HashMap<String, Object> map = new HashMap<>();
map.put("accountType", accountType);
map.put("prefixType", prefixType);
return new Gson().toJson(map);
}
public String updatePrefixType(final String prefixType) {
final HashMap<String, Object> map = new HashMap<>();
map.put("prefixType", prefixType);
return new Gson().toJson(map);
}
}
@@ -33,76 +33,93 @@ public class CodeHelper {
public static final String CODE_VALUE_POSITION_ATTRIBUTE_NAME = "position";
public static final String CODE_VALUE_URL = "/mifosng-provider/api/v1/codes/[codeId]/codevalues";
public static Object createCode(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final String codeName, final String jsonAttributeToGetback) {
public static Object createCode(final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final String codeName,
final String jsonAttributeToGetback) {
return Utils.performServerPost(requestSpec, responseSpec, CODE_URL + "?" + Utils.TENANT_IDENTIFIER, getTestCodeAsJSON(codeName),
return Utils.performServerPost(requestSpec, responseSpec, CODE_URL
+ "?" + Utils.TENANT_IDENTIFIER, getTestCodeAsJSON(codeName),
jsonAttributeToGetback);
}
public static Object updateCode(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final Integer codeId,
public static Object updateCode(final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final String codeName, final String jsonAttributeToGetback) {
return Utils.performServerPut(requestSpec, responseSpec, CODE_URL + "/" + codeId + "?" + Utils.TENANT_IDENTIFIER,
return Utils.performServerPut(requestSpec, responseSpec, CODE_URL + "/"
+ codeId + "?" + Utils.TENANT_IDENTIFIER,
getTestCodeAsJSON(codeName), jsonAttributeToGetback);
}
public static Object getCodeById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final String jsonAttributeToGetback) {
public static Object getCodeById(final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final String jsonAttributeToGetback) {
return Utils.performServerGet(requestSpec, responseSpec, CODE_URL + "/" + codeId + "?" + Utils.TENANT_IDENTIFIER,
return Utils.performServerGet(requestSpec, responseSpec, CODE_URL + "/"
+ codeId + "?" + Utils.TENANT_IDENTIFIER,
jsonAttributeToGetback);
}
public static HashMap<String,Object> getCodeByName(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final String codeName, final String jsonAttributeToGetback){
public static HashMap<String, Object> getCodeByName(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final String codeName) {
final HashMap<String, Object> code = new HashMap<>();
ArrayList<HashMap<String,Object>> getAllCodes = (ArrayList<HashMap<String,Object>>) CodeHelper.getAllCodes(requestSpec, responseSpec);
for (HashMap<String, Object>map : getAllCodes) {
ArrayList<HashMap<String, Object>> getAllCodes = CodeHelper
.getAllCodes(requestSpec, responseSpec);
for (HashMap<String, Object> map : getAllCodes) {
String name = (String) map.get("name");
if (name.equals(codeName)) {
code.put("id", map.get("id"));
code.put("name", map.get("name"));
code.put("position", map.get("position"));
code.put("description",map.get("description"));
code.put("systemDefined", map.get("systemDefined"));
break;
}
}
return code;
}
public static HashMap<String,Object> retrieveOrCreateCodeValue(Integer codeId,final RequestSpecification requestSpec,
final ResponseSpecification responseSpec,final String jsonAttributeToGetBack) {
public static HashMap<String, Object> retrieveOrCreateCodeValue(
Integer codeId, final RequestSpecification requestSpec,
final ResponseSpecification responseSpec) {
Integer codeValueId = null;
final List<HashMap<String,Object>> codeValuesList =
(List<HashMap<String,Object>>) CodeHelper.getCodeValuesForCode(requestSpec,responseSpec, codeId,"");
final List<HashMap<String, Object>> codeValuesList = CodeHelper
.getCodeValuesForCode(requestSpec, responseSpec, codeId, "");
/* If Code Values doesn't exist,then create Code value */
if (codeValuesList.size() == 0) {
final Integer codeValuePosition = 0;
final String codeValue = Utils.randomNameGenerator("", 3);
codeValueId = (Integer)CodeHelper.createCodeValue(requestSpec, responseSpec, codeId , codeValue,codeValuePosition, "resourceId");
codeValueId = (Integer) CodeHelper.createCodeValue(requestSpec,
responseSpec, codeId, codeValue, codeValuePosition,
"subResourceId");
} else {
codeValueId = (Integer) codeValuesList.get(0).get("id");
}
return Utils.performServerGet(requestSpec, responseSpec,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/" + codeValueId.toString() + "?" + Utils.TENANT_IDENTIFIER,
"");
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/"
+ codeValueId.toString() + "?"
+ Utils.TENANT_IDENTIFIER, "");
}
public static ArrayList<HashMap<String,Object>> getAllCodes(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
public static ArrayList<HashMap<String, Object>> getAllCodes(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec) {
return Utils.performServerGet(requestSpec, responseSpec, CODE_URL + "?" + Utils.TENANT_IDENTIFIER, "");
return Utils.performServerGet(requestSpec, responseSpec, CODE_URL + "?"
+ Utils.TENANT_IDENTIFIER, "");
}
public static Object getSystemDefinedCodes(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
public static Object getSystemDefinedCodes(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec) {
final String getResponse = given().spec(requestSpec).expect().spec(responseSpec).when()
.get(CodeHelper.CODE_URL + "?" + Utils.TENANT_IDENTIFIER).asString();
final String getResponse = given().spec(requestSpec).expect()
.spec(responseSpec).when()
.get(CodeHelper.CODE_URL + "?" + Utils.TENANT_IDENTIFIER)
.asString();
final JsonPath getResponseJsonPath = new JsonPath(getResponse);
@@ -117,7 +134,8 @@ public class CodeHelper {
return new Gson().toJson(map);
}
public static String getTestCodeValueAsJSON(final String codeValueName, final String description, final Integer position) {
public static String getTestCodeValueAsJSON(final String codeValueName,
final String description, final Integer position) {
final HashMap<String, Object> map = new HashMap<>();
map.put(CODE_VALUE_NAME_ATTRIBUTE_NAME, codeValueName);
if (description != null) {
@@ -127,63 +145,93 @@ public class CodeHelper {
return new Gson().toJson(map);
}
public static Object deleteCodeById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final String jsonAttributeToGetback) {
public static Object deleteCodeById(final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final String jsonAttributeToGetback) {
return Utils.performServerDelete(requestSpec, responseSpec, CODE_URL + "/" + codeId + "?" + Utils.TENANT_IDENTIFIER,
return Utils.performServerDelete(requestSpec, responseSpec, CODE_URL
+ "/" + codeId + "?" + Utils.TENANT_IDENTIFIER,
jsonAttributeToGetback);
}
public static Object createCodeValue(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final String codeValueName, final Integer position, final String jsonAttributeToGetback) {
public static Object createCodeValue(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final String codeValueName, final Integer position,
final String jsonAttributeToGetback) {
String description = null;
return createCodeValue(requestSpec, responseSpec, codeId, codeValueName, description, position, jsonAttributeToGetback);
return createCodeValue(requestSpec, responseSpec, codeId,
codeValueName, description, position, jsonAttributeToGetback);
}
public static Object createCodeValue(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final String codeValueName, final String description, final Integer position,
public static Object createCodeValue(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final String codeValueName, final String description,
final Integer position, final String jsonAttributeToGetback) {
return Utils.performServerPost(requestSpec, responseSpec,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "?"
+ Utils.TENANT_IDENTIFIER,
getTestCodeValueAsJSON(codeValueName, description, position),
jsonAttributeToGetback);
}
public static List<HashMap<String, Object>> getCodeValuesForCode(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final String jsonAttributeToGetback) {
return Utils.performServerPost(requestSpec, responseSpec, CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "?"
+ Utils.TENANT_IDENTIFIER, getTestCodeValueAsJSON(codeValueName, description, position), jsonAttributeToGetback);
}
public static List<HashMap<String,Object>> getCodeValuesForCode(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final String jsonAttributeToGetback) {
return Utils.performServerGet(requestSpec, responseSpec, CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "?"
return Utils.performServerGet(requestSpec, responseSpec,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "?"
+ Utils.TENANT_IDENTIFIER, jsonAttributeToGetback);
}
public static Object getCodeValueById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final Integer codeValueId, final String jsonAttributeToGetback) {
public static Object getCodeValueById(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final Integer codeValueId, final String jsonAttributeToGetback) {
return Utils.performServerGet(requestSpec, responseSpec,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/" + codeValueId.toString() + "?" + Utils.TENANT_IDENTIFIER,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/"
+ codeValueId.toString() + "?"
+ Utils.TENANT_IDENTIFIER, jsonAttributeToGetback);
}
public static Object deleteCodeValueById(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final Integer codeValueId, final String jsonAttributeToGetback) {
return Utils.performServerDelete(requestSpec, responseSpec,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/"
+ codeValueId.toString() + "?"
+ Utils.TENANT_IDENTIFIER, jsonAttributeToGetback);
}
public static Object updateCodeValue(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final Integer codeValueId, final String codeValueName,
final Integer position, final String jsonAttributeToGetback) {
String description = null;
return updateCodeValue(requestSpec, responseSpec, codeId, codeValueId,
codeValueName, description, position, jsonAttributeToGetback);
}
public static Object updateCodeValue(
final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer codeId,
final Integer codeValueId, final String codeValueName,
final String description, final Integer position,
final String jsonAttributeToGetback) {
return Utils.performServerPut(requestSpec, responseSpec,
CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/"
+ codeValueId + "?" + Utils.TENANT_IDENTIFIER,
getTestCodeValueAsJSON(codeValueName, description, position),
jsonAttributeToGetback);
}
public static Object deleteCodeValueById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final Integer codeValueId, final String jsonAttributeToGetback) {
return Utils.performServerDelete(requestSpec, responseSpec, CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/"
+ codeValueId.toString() + "?" + Utils.TENANT_IDENTIFIER, jsonAttributeToGetback);
}
public static Object updateCodeValue(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final Integer codeValueId, final String codeValueName, final Integer position,
final String jsonAttributeToGetback) {
String description = null;
return updateCodeValue(requestSpec, responseSpec, codeId, codeValueId, codeValueName, description, position, jsonAttributeToGetback);
}
public static Object updateCodeValue(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer codeId, final Integer codeValueId, final String codeValueName, final String description, final Integer position,
final String jsonAttributeToGetback) {
return Utils.performServerPut(requestSpec, responseSpec, CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/" + codeValueId
+ "?" + Utils.TENANT_IDENTIFIER, getTestCodeValueAsJSON(codeValueName, description, position), jsonAttributeToGetback);
}
}
@@ -16,8 +16,8 @@ public class ClientApiConstants {
public static final String CLIENT_RESOURCE_NAME = "client";
public static final String CLIENT_CLOSURE_REASON = "ClientClosureReason";
public static final String CLIENT_ACTION_REASON = "ClientActionReason";
public static final String CLIENT_REJECT_REASON = "ClientRejectReason";
public static final String CLIENT_WITHDRAW_REASON = "ClientWithdrawReason";
public static final String CLIENT_REJECT_REASON = "ClientRejectionReason";
public static final String CLIENT_WITHDRAW_REASON = "ClientWithdrawalReason";
public static final String GENDER = "Gender";
@@ -46,10 +46,10 @@ public class ClientApiConstants {
public static final String closureDateParamName = "closureDate";
public static final String closureReasonIdParamName = "closureReasonId";
public static final String rejectDateParamName = "rejectionDate";
public static final String rejectReasonIdParamName ="rejectionReasonId";
public static final String withdrawDateParamName = "withdrawalDate";
public static final String withdrawReasonIdParamName ="withdrawalReasonId";
public static final String rejectionDateParamName = "rejectionDate";
public static final String rejectionReasonIdParamName ="rejectionReasonId";
public static final String withdrawalDateParamName = "withdrawalDate";
public static final String withdrawalReasonIdParamName ="withdrawalReasonId";
public static final String submittedOnDateParamName = "submittedOnDate";
public static final String savingsProductIdParamName = "savingsProductId";
@@ -115,8 +115,8 @@ public class ClientApiConstants {
public static final Set<String> CLIENT_CLOSE_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,
dateFormatParamName, closureDateParamName, closureReasonIdParamName));
public static final Set<String> CLIENT_REJECT_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,rejectDateParamName,rejectReasonIdParamName));
public static final Set<String> CLIENT_REJECT_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,rejectionDateParamName,rejectionReasonIdParamName));
public static final Set<String> CLIENT_WITHDRAW_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,withdrawDateParamName,withdrawReasonIdParamName));
public static final Set<String> CLIENT_WITHDRAW_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,withdrawalDateParamName,withdrawalReasonIdParamName));
}
@@ -527,11 +527,11 @@ public final class ClientDataValidator {
final JsonElement element = command.parsedJson();
final LocalDate rejectDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.rejectDateParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.rejectDateParamName).value(rejectDate).notNull();
final LocalDate rejectionDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.rejectionDateParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.rejectionDateParamName).value(rejectionDate).notNull();
final Long rejectReasonId = this.fromApiJsonHelper.extractLongNamed(ClientApiConstants.rejectReasonIdParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.rejectReasonIdParamName).value(rejectReasonId).notNull()
final Long rejectionReasonId = this.fromApiJsonHelper.extractLongNamed(ClientApiConstants.rejectionReasonIdParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.rejectionReasonIdParamName).value(rejectionReasonId).notNull()
.longGreaterThanZero();
throwExceptionIfValidationWarningsExist(dataValidationErrors);
@@ -553,11 +553,11 @@ public final class ClientDataValidator {
final JsonElement element = command.parsedJson();
final LocalDate withdrawDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.withdrawDateParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.withdrawDateParamName).value(withdrawDate).notNull();
final LocalDate withdrawalDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.withdrawalDateParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.withdrawalDateParamName).value(withdrawalDate).notNull();
final Long withdrawReasonId = this.fromApiJsonHelper.extractLongNamed(ClientApiConstants.withdrawReasonIdParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.withdrawReasonIdParamName).value(withdrawReasonId).notNull()
final Long withdrawalReasonId = this.fromApiJsonHelper.extractLongNamed(ClientApiConstants.withdrawalReasonIdParamName, element);
baseDataValidator.reset().parameter(ClientApiConstants.withdrawalReasonIdParamName).value(withdrawalReasonId).notNull()
.longGreaterThanZero();
throwExceptionIfValidationWarningsExist(dataValidationErrors);
@@ -139,11 +139,11 @@ public final class Client extends AbstractPersistable<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "reject_reason_cv_id", nullable = true)
private CodeValue rejectReason;
private CodeValue rejectionReason;
@Column(name = "rejectedon_date", nullable = true)
@Temporal(TemporalType.DATE)
private Date rejectDate;
private Date rejectionDate;
@ManyToOne(optional = true)
@JoinColumn(name = "rejectedon_userid", nullable = true)
@@ -151,11 +151,11 @@ public final class Client extends AbstractPersistable<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "withdraw_reason_cv_id", nullable = true)
private CodeValue withdrawReason;
private CodeValue withdrawalReason;
@Column(name = "withdrawn_on_date", nullable = true)
@Temporal(TemporalType.DATE)
private Date withdrawDate;
private Date withdrawalDate;
@ManyToOne(optional = true)
@JoinColumn(name = "withdraw_on_userid", nullable = true)
@@ -866,22 +866,22 @@ public final class Client extends AbstractPersistable<Long> {
return dateOfBirth;
}
public void reject(AppUser currentUser, CodeValue rejectReason, Date rejectDate) {
this.rejectReason = rejectReason;
this.rejectDate = rejectDate;
public void reject(AppUser currentUser, CodeValue rejectionReason, Date rejectionDate) {
this.rejectionReason = rejectionReason;
this.rejectionDate = rejectionDate;
this.rejectedBy = currentUser;
this.updatedBy = currentUser;
this.updatedOnDate = rejectDate;
this.updatedOnDate = rejectionDate;
this.status = ClientStatus.REJECTED.getValue();
}
public void withdraw(AppUser currentUser, CodeValue withdrawReason, Date withdrawDate) {
this.withdrawReason = withdrawReason;
this.withdrawDate = withdrawDate;
public void withdraw(AppUser currentUser, CodeValue withdrawalReason, Date withdrawalDate) {
this.withdrawalReason = withdrawalReason;
this.withdrawalDate = withdrawalDate;
this.withdrawnBy = currentUser;
this.updatedBy = currentUser;
this.updatedOnDate = withdrawDate;
this.updatedOnDate = withdrawalDate;
this.status = ClientStatus.WITHDRAWN.getValue();
}
@@ -604,22 +604,22 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
this.fromApiJsonDeserializer.validateRejection(command);
final Client client = this.clientRepository.findOneWithNotFoundDetection(entityId);
final LocalDate rejectDate = command.localDateValueOfParameterNamed(ClientApiConstants.rejectDateParamName);
final Long rejectReasonId = command.longValueOfParameterNamed(ClientApiConstants.rejectReasonIdParamName);
final LocalDate rejectionDate = command.localDateValueOfParameterNamed(ClientApiConstants.rejectionDateParamName);
final Long rejectionReasonId = command.longValueOfParameterNamed(ClientApiConstants.rejectionReasonIdParamName);
final CodeValue rejectReason = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(
ClientApiConstants.CLIENT_REJECT_REASON, rejectReasonId);
final CodeValue rejectionReason = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(
ClientApiConstants.CLIENT_REJECT_REASON, rejectionReasonId);
if (client.isNotPending()) {
final String errorMessage = "Only clients pending activation may be withdrawn.";
throw new InvalidClientStateTransitionException("rejection", "on.account.not.in.pending.activation.status", errorMessage,
rejectDate, client.getSubmittedOnDate());
} else if (client.getSubmittedOnDate().isAfter(rejectDate)) {
rejectionDate, client.getSubmittedOnDate());
} else if (client.getSubmittedOnDate().isAfter(rejectionDate)) {
final String errorMessage = "The client rejection date cannot be before the client submitted date.";
throw new InvalidClientStateTransitionException("rejection", "date.cannot.before.client.submitted.date", errorMessage,
rejectDate, client.getSubmittedOnDate());
rejectionDate, client.getSubmittedOnDate());
}
client.reject(currentUser, rejectReason, rejectDate.toDate());
client.reject(currentUser, rejectionReason, rejectionDate.toDate());
this.clientRepository.saveAndFlush(client);
return new CommandProcessingResultBuilder() //
@@ -635,22 +635,22 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
this.fromApiJsonDeserializer.validateWithdrawn(command);
final Client client = this.clientRepository.findOneWithNotFoundDetection(entityId);
final LocalDate withdrawDate = command.localDateValueOfParameterNamed(ClientApiConstants.withdrawDateParamName);
final Long withdrawReasonId = command.longValueOfParameterNamed(ClientApiConstants.withdrawReasonIdParamName);
final LocalDate withdrawalDate = command.localDateValueOfParameterNamed(ClientApiConstants.withdrawalDateParamName);
final Long withdrawalReasonId = command.longValueOfParameterNamed(ClientApiConstants.withdrawalReasonIdParamName);
final CodeValue withdrawReason = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(
ClientApiConstants.CLIENT_WITHDRAW_REASON, withdrawReasonId);
final CodeValue withdrawalReason = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(
ClientApiConstants.CLIENT_WITHDRAW_REASON, withdrawalReasonId);
if (client.isNotPending()) {
final String errorMessage = "Only clients pending activation may be withdrawn.";
throw new InvalidClientStateTransitionException("withdrawal", "on.account.not.in.pending.activation.status", errorMessage,
withdrawDate, client.getSubmittedOnDate());
} else if (client.getSubmittedOnDate().isAfter(withdrawDate)) {
withdrawalDate, client.getSubmittedOnDate());
} else if (client.getSubmittedOnDate().isAfter(withdrawalDate)) {
final String errorMessage = "The client withdrawal date cannot be before the client submitted date.";
throw new InvalidClientStateTransitionException("withdrawal", "date.cannot.before.client.submitted.date", errorMessage,
withdrawDate, client.getSubmittedOnDate());
withdrawalDate, client.getSubmittedOnDate());
}
client.withdraw(currentUser, withdrawReason, withdrawDate.toDate());
client.withdraw(currentUser, withdrawalReason, withdrawalDate.toDate());
this.clientRepository.saveAndFlush(client);
return new CommandProcessingResultBuilder() //