diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index ec491b809..a0dd71e7a 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -3567,7 +3567,7 @@ Request Body:
Mandatory Fields
- rejectDate, rejectReasonId
+ rejectionDate, rejectionReasonId
@@ -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:
Mandatory Fields
- withdrawDate, withdrawReasonId
+ withdrawalDate, withdrawalReasonId
@@ -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" } diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/AccountNumberPreferencesTest.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/AccountNumberPreferencesTest.java index 7eabdb40f..62eb3d050 100644 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/AccountNumberPreferencesTest.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/AccountNumberPreferencesTest.java @@ -1,391 +1,511 @@ 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; - private ResponseSpecification responseSpec; - private ResponseSpecification responseValidationError; - private ResponseSpecification responseNotFoundError; - private ResponseSpecification responseForbiddenError; - private Integer clientId; - private Integer loanProductId; - 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 LoanTransactionHelper loanTransactionHelper; - private SavingsAccountHelper savingsAccountHelper; - private AccountNumberPreferencesHelper accountNumberPreferencesHelper; - private Integer clientAccountNumberPreferenceId; - private Integer loanAccountNumberPreferenceId; - private Integer savingsAccountNumberPreferenceId; - private final String MINIMUM_OPENING_BALANCE = "1000.0"; - private final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL"; - private Boolean isAccountPreferenceSetUp = false; - 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"; - - @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); - - } - - @Test - public void testAccountNumberPreferences() { - - /* Create Loan and Savings Product */ - this.createLoanAndSavingsProduct(); - - /* Ensure no account number preferences are present in the system */ - this.deleteAllAccountNumberPreferences(); - - /* - * Validate the default account number generation rules for clients, - * loans and savings accounts. - */ - this.validateDefaultAccountNumberGeneration(); - - /* Create and Validate account number preferences */ - this.createAccountNumberPreference(); - - /* - * Validate account number preference rules apply to Clients,Loans and - * Saving Accounts - */ - this.validateAccountNumberGenerationWithPreferences(); - - /* Validate account number preferences Updation */ - this.updateAccountNumberPreference(); - - /* - * Validate account number preference rules apply to Clients,Loans and - * Saving Accounts after Updation - */ - this.validateAccountNumberGenerationWithPreferences(); - - /* Delete all account number preferences */ - this.deleteAllAccountNumberPreferences(); - - } - - private void createLoanAndSavingsProduct() { - this.createLoanProduct(); - this.createSavingsProduct(); - } - - private void deleteAllAccountNumberPreferences() { - ArrayList> preferenceIds = this.accountNumberPreferencesHelper.getAllAccountNumberPreferences(); - /* Deletion of valid account preference ID */ - for (HashMap preferenceId : preferenceIds) { - Integer id = (Integer) preferenceId.get("id"); - HashMap 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 deletionError = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(10, - this.responseNotFoundError, ""); - Assert.assertEquals("error.msg.resource.not.found", deletionError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); - } - - private void validateDefaultAccountNumberGeneration() { - this.createAndValidateClientEntity(this.isAccountPreferenceSetUp); - this.createAndValidateLoanEntity(this.isAccountPreferenceSetUp); - this.createAndValidateSavingsEntity(this.isAccountPreferenceSetUp); - } - - private void validateAccountNumberGenerationWithPreferences() { - this.isAccountPreferenceSetUp = true; - this.createAndValidateClientEntity(this.isAccountPreferenceSetUp); - this.createAndValidateLoanEntity(this.isAccountPreferenceSetUp); - this.createAndValidateSavingsEntity(this.isAccountPreferenceSetUp); - } - - 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.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.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) { - /* Creating account Preference with duplicate data should fail */ - System.out - .println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH DUPLICATE DATA------------------------------------------"); - - HashMap creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData( - this.responseForbiddenError, accountType, prefixType, ""); - - 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) { - - /* Creating account Preference with invalid data should fail */ - System.out - .println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------"); - - HashMap 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)); - } - } - - private void updateAccountNumberPreference() { - HashMap accountNumberPreferences = this.accountNumberPreferencesHelper.updateAccountNumberPreference( - this.clientAccountNumberPreferenceId, "101", this.responseSpec, ""); - - System.out.println("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID " - + accountNumberPreferences.get("resourceId")); - - this.accountNumberPreferencesHelper.verifyUpdationOfAccountNumberPreferences((Integer) accountNumberPreferences.get("resourceId"), - this.responseSpec, this.requestSpec); - - /* Update invalid account preference id should fail */ - System.out - .println("---------------------------------UPDATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------"); - - /* Invalid Account Type */ - HashMap updationError = this.accountNumberPreferencesHelper.updateAccountNumberPreference(5, "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)); - } - /* Invalid Prefix Type */ - HashMap updationError1 = this.accountNumberPreferencesHelper.updateAccountNumberPreference( - this.clientAccountNumberPreferenceId, "103", this.responseValidationError, ""); - - 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(); - if (isAccountPreferenceSetUp) { - this.createAndValidateClientBasedOnAccountPreference(); - } else { - this.createAndValidateClientWithoutAccountPreference(); - } - } - - private void createAndValidateClientWithoutAccountPreference() { - this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec); - Assert.assertNotNull(this.clientId); - 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"); - if (clientPrefixName.equals(this.clientTypeName)) { - - /* Retrieve Code id for the Code "ClientType" */ - HashMap code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName, ""); - this.clientTypeCodeId = (Integer) code.get("id"); - - /* Retrieve/Create Code Values for the Code "ClientType" */ - HashMap 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"); - - Assert.assertNotNull(clientId); - - 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); - 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); - } - } - - private void validateAccountNumberLengthAndStartsWithPrefix(final String accountNumber, final String prefix) { - if (prefix != null) { - Assert.assertEquals(accountNumber.length(), prefix.length() + 9); - Assert.assertTrue(accountNumber.startsWith(prefix)); - } else { - Assert.assertEquals(accountNumber.length(), 9); - } - } - - private void createLoanProduct() { - this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); - - System.out.println("---------------------------------CREATING LOAN PRODUCT------------------------------------------"); - - 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 + ")"); - } - - private void createAndValidateLoanEntity(Boolean isAccountPreferenceSetUp) { - this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); - - 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); - - this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON); - 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"); - if (loanPrefixName.equals(this.officeName)) { - 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); - } - 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 + ")"); - } - } - - private void createSavingsProduct() { - this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); - - System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------"); - - SavingsProductHelper savingsProductHelper = new SavingsProductHelper(); - - final String savingsProductJSON = savingsProductHelper - // - .withInterestCompoundingPeriodTypeAsDaily() - // - .withInterestPostingPeriodTypeAsMonthly() - // - .withInterestCalculationPeriodTypeAsDailyBalance() - // - .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 + ")"); - - } - - private void createAndValidateSavingsEntity(Boolean isAccountPreferenceSetUp) { - this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); - - this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec); - - this.savingsId = this.savingsAccountHelper - .applyForSavingsApplication(this.clientId, this.savingsProductId, ACCOUNT_TYPE_INDIVIDUAL); - - String savingsAccountNo = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "accountNo"); - - if (isAccountPreferenceSetUp) { - 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(), - "officeName"); - this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, savingsOfficeName); - } else if (savingsPrefixName.equals(this.savingsShortName)) { - 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 + ")"); - } else { - this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, null); - System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID: " + this.savingsId + ")"); - } - } + private RequestSpecification requestSpec; + private ResponseSpecification responseSpec; + private ResponseSpecification responseValidationError; + private ResponseSpecification responseNotFoundError; + private ResponseSpecification responseForbiddenError; + private Integer clientId; + private Integer loanProductId; + private Integer loanId; + private Integer savingsProductId; + private Integer savingsId; + 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; + private Integer clientAccountNumberPreferenceId; + private Integer loanAccountNumberPreferenceId; + private Integer savingsAccountNumberPreferenceId; + private final String MINIMUM_OPENING_BALANCE = "1000.0"; + private final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL"; + private Boolean isAccountPreferenceSetUp = false; + private Integer clientTypeCodeId; + private String clientCodeValueName; + private Integer clientCodeValueId; + 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); + + } + + @Test + public void testAccountNumberPreferences() { + + /* Create Loan and Savings Product */ + this.createLoanAndSavingsProduct(); + + /* Ensure no account number preferences are present in the system */ + this.deleteAllAccountNumberPreferences(); + + /* + * Validate the default account number generation rules for clients, + * loans and savings accounts. + */ + this.validateDefaultAccountNumberGeneration(); + + /* Create and Validate account number preferences */ + this.createAccountNumberPreference(); + + /* + * Validate account number preference rules apply to Clients,Loans and + * Saving Accounts + */ + this.validateAccountNumberGenerationWithPreferences(); + + /* Validate account number preferences Updation */ + this.updateAccountNumberPreference(); + + /* + * Validate account number preference rules apply to Clients,Loans and + * Saving Accounts after Updation + */ + this.validateAccountNumberGenerationWithPreferences(); + + /* Delete all account number preferences */ + this.deleteAllAccountNumberPreferences(); + + } + + private void createLoanAndSavingsProduct() { + this.createLoanProduct(); + this.createSavingsProduct(); + } + + private void deleteAllAccountNumberPreferences() { + ArrayList> preferenceIds = this.accountNumberPreferencesHelper + .getAllAccountNumberPreferences(); + /* Deletion of valid account preference ID */ + for (HashMap preferenceId : preferenceIds) { + Integer id = (Integer) preferenceId.get("id"); + HashMap 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 deletionError = this.accountNumberPreferencesHelper + .deleteAccountNumberPreference(10, this.responseNotFoundError, + ""); + Assert.assertEquals("error.msg.resource.not.found", + deletionError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); + } + + private void validateDefaultAccountNumberGeneration() { + this.createAndValidateClientEntity(this.isAccountPreferenceSetUp); + this.createAndValidateLoanEntity(this.isAccountPreferenceSetUp); + this.createAndValidateSavingsEntity(this.isAccountPreferenceSetUp); + } + + private void validateAccountNumberGenerationWithPreferences() { + this.isAccountPreferenceSetUp = true; + this.createAndValidateClientEntity(this.isAccountPreferenceSetUp); + this.createAndValidateLoanEntity(this.isAccountPreferenceSetUp); + this.createAndValidateSavingsEntity(this.isAccountPreferenceSetUp); + } + + 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.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.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) { + /* Creating account Preference with duplicate data should fail */ + System.out + .println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH DUPLICATE DATA------------------------------------------"); + + HashMap creationError = this.accountNumberPreferencesHelper + .createAccountNumberPreferenceWithInvalidData( + this.responseForbiddenError, accountType, prefixType, + ""); + + 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) { + + /* Creating account Preference with invalid data should fail */ + System.out + .println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------"); + + HashMap 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)); + } + } + + private void updateAccountNumberPreference() { + HashMap accountNumberPreferences = this.accountNumberPreferencesHelper + .updateAccountNumberPreference( + this.clientAccountNumberPreferenceId, "101", + this.responseSpec, ""); + + System.out + .println("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID " + + accountNumberPreferences.get("resourceId")); + + this.accountNumberPreferencesHelper + .verifyUpdationOfAccountNumberPreferences( + (Integer) accountNumberPreferences.get("resourceId"), + this.responseSpec, this.requestSpec); + + /* Update invalid account preference id should fail */ + System.out + .println("---------------------------------UPDATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------"); + + /* Invalid Account Type */ + HashMap 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)); + } + /* Invalid Prefix Type */ + HashMap updationError1 = this.accountNumberPreferencesHelper + .updateAccountNumberPreference( + this.clientAccountNumberPreferenceId, "103", + this.responseValidationError, ""); + + 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(); + if (isAccountPreferenceSetUp) { + this.createAndValidateClientBasedOnAccountPreference(); + } else { + this.createAndValidateClientWithoutAccountPreference(); + } + } + + private void createAndValidateClientWithoutAccountPreference() { + this.clientId = ClientHelper.createClient(this.requestSpec, + this.responseSpec); + Assert.assertNotNull(this.clientId); + 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"); + if (clientPrefixName.equals(this.clientTypeName)) { + + /* Retrieve Code id for the Code "ClientType" */ + HashMap code = CodeHelper + .getCodeByName(this.requestSpec, this.responseSpec, + codeName); + this.clientTypeCodeId = (Integer) code.get("id"); + + /* Retrieve/Create Code Values for the Code "ClientType" */ + HashMap 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"); + + Assert.assertNotNull(clientId); + + 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); + 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); + } + } + + private void validateAccountNumberLengthAndStartsWithPrefix( + final String accountNumber, final String prefix) { + if (prefix != null) { + Assert.assertEquals(accountNumber.length(), prefix.length() + 9); + Assert.assertTrue(accountNumber.startsWith(prefix)); + } else { + Assert.assertEquals(accountNumber.length(), 9); + } + } + + private void createLoanProduct() { + this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200) + .build(); + + System.out + .println("---------------------------------CREATING LOAN PRODUCT------------------------------------------"); + + 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 + ")"); + } + + private void createAndValidateLoanEntity(Boolean isAccountPreferenceSetUp) { + this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200) + .build(); + + 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); + + this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON); + 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"); + if (loanPrefixName.equals(this.officeName)) { + 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); + } + 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 + ")"); + } + } + + private void createSavingsProduct() { + this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200) + .build(); + + System.out + .println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------"); + + SavingsProductHelper savingsProductHelper = new SavingsProductHelper(); + + final String savingsProductJSON = savingsProductHelper + // + .withInterestCompoundingPeriodTypeAsDaily() + // + .withInterestPostingPeriodTypeAsMonthly() + // + .withInterestCalculationPeriodTypeAsDailyBalance() + // + .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 + ")"); + + } + + private void createAndValidateSavingsEntity(Boolean isAccountPreferenceSetUp) { + this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200) + .build(); + + this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, + this.responseSpec); + + this.savingsId = this.savingsAccountHelper.applyForSavingsApplication( + this.clientId, this.savingsProductId, ACCOUNT_TYPE_INDIVIDUAL); + + String savingsAccountNo = (String) this.savingsAccountHelper + .getSavingsAccountDetail(this.savingsId, "accountNo"); + + if (isAccountPreferenceSetUp) { + 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(), + "officeName"); + this.validateAccountNumberLengthAndStartsWithPrefix( + savingsAccountNo, savingsOfficeName); + } else if (savingsPrefixName.equals(this.savingsShortName)) { + 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 + ")"); + } else { + this.validateAccountNumberLengthAndStartsWithPrefix( + savingsAccountNo, null); + System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID: " + + this.savingsId + ")"); + } + } } diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/ClientTest.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/ClientTest.java index 8e80a5a68..d8b5d2cd1 100644 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/ClientTest.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/ClientTest.java @@ -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); diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/ClientHelper.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/ClientHelper.java index e4bfe4d43..28eca04cb 100755 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/ClientHelper.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/ClientHelper.java @@ -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 map = new HashMap<>(); + + /* Retrieve Code id for the Code "ClientClosureReason" */ + String codeName = "ClientClosureReason"; + HashMap code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName); + Integer clientClosureCodeId = (Integer)code.get("id"); + + /* Retrieve/Create Code Values for the Code "ClientClosureReason" */ + HashMap 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 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 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; diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/loans/LoanTransactionHelper.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/loans/LoanTransactionHelper.java index 8721b7e5e..b55ecde4b 100755 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/loans/LoanTransactionHelper.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/loans/LoanTransactionHelper.java @@ -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) { diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesHelper.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesHelper.java index 9fc35610a..9745f7219 100644 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesHelper.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesHelper.java @@ -1,6 +1,5 @@ package org.mifosplatform.integrationtests.common.system; - import java.util.ArrayList; import java.util.HashMap; @@ -12,107 +11,154 @@ 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) { - this.requestSpec = requestSpec; - this.responseSpec = responseSpec; - } - - public Object createClientAccountNumberPreference(ResponseSpecification responseSpec,String jsonAttributeToGetBack) { - System.out.println("---------------------------------CREATING CLIENT ACCOUNT NUMBER PREFERENCE------------------------------------------"); - final String requestJSON = new AccountNumberPreferencesTestBuilder().clientBuild(); + private final ResponseSpecification responseSpec; - final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER; + private static final String ACCOUNT_NUMBER_FORMATS_REQUEST_URL = "/mifosng-provider/api/v1/accountnumberformats"; - 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 AccountNumberPreferencesHelper( + final RequestSpecification requestSpec, + final ResponseSpecification responseSpec) { + this.requestSpec = requestSpec; + this.responseSpec = responseSpec; + } - final String requestJSON = new AccountNumberPreferencesTestBuilder().loanBuild(); + public Object createClientAccountNumberPreference( + ResponseSpecification responseSpec, String jsonAttributeToGetBack) { + System.out + .println("---------------------------------CREATING CLIENT ACCOUNT NUMBER PREFERENCE------------------------------------------"); - 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------------------------------------------"); + final String requestJSON = new AccountNumberPreferencesTestBuilder() + .clientBuild(); - final String requestJSON = new AccountNumberPreferencesTestBuilder().savingsBuild(); + 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 HashMap createAccountNumberPreferenceWithInvalidData(ResponseSpecification responseSpec, - String accountType,String prefixType,String jsonAttributeToGetBack){ + public Object createLoanAccountNumberPreference( + ResponseSpecification responseSpec, String jsonAttributeToGetBack) { + System.out + .println("---------------------------------CREATING LOAN ACCOUNT NUMBER PREFERENCE------------------------------------------"); - final String requestJSON = new AccountNumberPreferencesTestBuilder().invalidDataBuild(accountType,prefixType); + 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 HashMap updateAccountNumberPreference(final Integer accountNumberFormatId,final String prefixType,ResponseSpecification responseSpec,String jsonAttributeToGetBack) { + public Object createSavingsAccountNumberPreference( + ResponseSpecification responseSpec, String jsonAttributeToGetBack) { + System.out + .println("---------------------------------CREATING SAVINGS ACCOUNT NUMBER PREFERENCE------------------------------------------"); - final String requestJSON = new AccountNumberPreferencesTestBuilder().updatePrefixType(prefixType); + final String requestJSON = new AccountNumberPreferencesTestBuilder() + .savingsBuild(); - final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER; - - return Utils.performServerPut(this.requestSpec, responseSpec, URL, requestJSON, jsonAttributeToGetBack); - - } - - public HashMap deleteAccountNumberPreference(final Integer accountNumberFormatId,ResponseSpecification responseSpec,String jsonAttributeToGetBack) { + final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + + Utils.TENANT_IDENTIFIER; + return Utils.performServerPost(this.requestSpec, responseSpec, URL, + requestJSON, jsonAttributeToGetBack); - System.out.println("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE------------------------------------------"); + } - final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER; - - 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; - - return Utils.performServerGet(requestSpec, responseSpec, URL, jsonAttributeToGetBack); - } - - public ArrayList> getAllAccountNumberPreferences() { - final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER; - final ArrayList> response = Utils.performServerGet(requestSpec, responseSpec, URL, ""); - return response; - } - - 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; - - Utils.performServerGet(requestSpec, responseSpec, clientURL, "id"); - - 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; - - Utils.performServerGet(requestSpec, responseSpec, savingsURL, "id"); - } - - public void verifyUpdationOfAccountNumberPreferences(final Integer accountNumberPreferenceId, - ResponseSpecification responseSpec,RequestSpecification requestSpec){ - - final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + accountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER; - Utils.performServerGet(requestSpec, responseSpec, URL, "id"); + public HashMap createAccountNumberPreferenceWithInvalidData( + ResponseSpecification responseSpec, String accountType, + String prefixType, String jsonAttributeToGetBack) { - } + 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); + + } + + public HashMap updateAccountNumberPreference( + final Integer accountNumberFormatId, final String prefixType, + ResponseSpecification responseSpec, String jsonAttributeToGetBack) { + + final String requestJSON = new AccountNumberPreferencesTestBuilder() + .updatePrefixType(prefixType); + + final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER; + + return Utils.performServerPut(this.requestSpec, responseSpec, URL, + requestJSON, jsonAttributeToGetBack); + + } + + public HashMap deleteAccountNumberPreference( + final Integer accountNumberFormatId, + ResponseSpecification responseSpec, String jsonAttributeToGetBack) { + + System.out + .println("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE------------------------------------------"); + + final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + + accountNumberFormatId + "?" + Utils.TENANT_IDENTIFIER; + + 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; + + return Utils.performServerGet(requestSpec, responseSpec, URL, + jsonAttributeToGetBack); + } + + public ArrayList> getAllAccountNumberPreferences() { + final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "?" + + Utils.TENANT_IDENTIFIER; + final ArrayList> response = Utils + .performServerGet(requestSpec, responseSpec, URL, ""); + return response; + } + + 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; + + Utils.performServerGet(requestSpec, responseSpec, clientURL, "id"); + + 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; + + Utils.performServerGet(requestSpec, responseSpec, savingsURL, "id"); + } + + public void verifyUpdationOfAccountNumberPreferences( + final Integer accountNumberPreferenceId, + ResponseSpecification responseSpec, RequestSpecification requestSpec) { + + final String URL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + + accountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER; + Utils.performServerGet(requestSpec, responseSpec, URL, "id"); + + } } diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java index 98e63d201..6488c36c0 100644 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java @@ -5,48 +5,49 @@ import java.util.HashMap; import com.google.gson.Gson; public class AccountNumberPreferencesTestBuilder { - private String clientAccountType = "1"; private String clientPrefixType = "101"; private String loanAccountType = "2"; private String loanPrefixType = "1"; private String savingsAccountType = "3"; private String savingsPrefixType = "1"; - + public String clientBuild() { final HashMap map = new HashMap<>(); map.put("accountType", clientAccountType); map.put("prefixType", clientPrefixType); - + return new Gson().toJson(map); } - public String loanBuild(){ + + public String loanBuild() { final HashMap map = new HashMap<>(); map.put("accountType", loanAccountType); map.put("prefixType", loanPrefixType); - + return new Gson().toJson(map); } - public String savingsBuild(){ + + public String savingsBuild() { final HashMap 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 map = new HashMap<>(); map.put("accountType", accountType); map.put("prefixType", prefixType); - + return new Gson().toJson(map); } + public String updatePrefixType(final String prefixType) { final HashMap map = new HashMap<>(); map.put("prefixType", prefixType); - return new Gson().toJson(map); } } - diff --git a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/CodeHelper.java b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/CodeHelper.java index 4fdac3c42..7aca024e7 100644 --- a/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/CodeHelper.java +++ b/mifosng-provider/src/integrationTest/java/org/mifosplatform/integrationtests/common/system/CodeHelper.java @@ -20,170 +20,218 @@ import com.jayway.restassured.specification.ResponseSpecification; public class CodeHelper { - public static final String CODE_ID_ATTRIBUTE_NAME = "id"; - public static final String RESPONSE_ID_ATTRIBUTE_NAME = "resourceId"; - public static final String SUBRESPONSE_ID_ATTRIBUTE_NAME = "subResourceId"; - public static final String CODE_NAME_ATTRIBUTE_NAME = "name"; - public static final String CODE_SYSTEM_DEFINED_ATTRIBUTE_NAME = "systemDefined"; - public static final String CODE_URL = "/mifosng-provider/api/v1/codes"; + public static final String CODE_ID_ATTRIBUTE_NAME = "id"; + public static final String RESPONSE_ID_ATTRIBUTE_NAME = "resourceId"; + public static final String SUBRESPONSE_ID_ATTRIBUTE_NAME = "subResourceId"; + public static final String CODE_NAME_ATTRIBUTE_NAME = "name"; + public static final String CODE_SYSTEM_DEFINED_ATTRIBUTE_NAME = "systemDefined"; + public static final String CODE_URL = "/mifosng-provider/api/v1/codes"; - public static final String CODE_VALUE_ID_ATTRIBUTE_NAME = "id"; - public static final String CODE_VALUE_NAME_ATTRIBUTE_NAME = "name"; - public static final String CODE_VALUE_DESCRIPTION_ATTRIBUTE_NAME = "description"; - 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 final String CODE_VALUE_ID_ATTRIBUTE_NAME = "id"; + public static final String CODE_VALUE_NAME_ATTRIBUTE_NAME = "name"; + public static final String CODE_VALUE_DESCRIPTION_ATTRIBUTE_NAME = "description"; + 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), - jsonAttributeToGetback); - } + 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, - final String codeName, final String jsonAttributeToGetback) { + 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, - getTestCodeAsJSON(codeName), jsonAttributeToGetback); - } + 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, - jsonAttributeToGetback); + return Utils.performServerGet(requestSpec, responseSpec, CODE_URL + "/" + + codeId + "?" + Utils.TENANT_IDENTIFIER, + jsonAttributeToGetback); - } - - public static HashMap getCodeByName(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, - final String codeName, final String jsonAttributeToGetback){ + } - final HashMap code = new HashMap<>(); + public static HashMap getCodeByName( + final RequestSpecification requestSpec, + final ResponseSpecification responseSpec, final String codeName) { - ArrayList> getAllCodes = (ArrayList>) CodeHelper.getAllCodes(requestSpec, responseSpec); - for (HashMapmap : getAllCodes) { + final HashMap code = new HashMap<>(); + + ArrayList> getAllCodes = CodeHelper + .getAllCodes(requestSpec, responseSpec); + for (HashMap 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 retrieveOrCreateCodeValue(Integer codeId,final RequestSpecification requestSpec, - final ResponseSpecification responseSpec,final String jsonAttributeToGetBack) { - Integer codeValueId = null; - final List> codeValuesList = - (List>) CodeHelper.getCodeValuesForCode(requestSpec,responseSpec, codeId,""); + return code; + } + + public static HashMap retrieveOrCreateCodeValue( + Integer codeId, final RequestSpecification requestSpec, + final ResponseSpecification responseSpec) { + Integer codeValueId = null; + final List> 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> getAllCodes(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { + public static ArrayList> 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); + final JsonPath getResponseJsonPath = new JsonPath(getResponse); - // get any systemDefined code - return getResponseJsonPath.get("find { e -> e.systemDefined == true }"); + // get any systemDefined code + return getResponseJsonPath.get("find { e -> e.systemDefined == true }"); - } + } - public static String getTestCodeAsJSON(final String codeName) { - final HashMap map = new HashMap<>(); - map.put(CODE_NAME_ATTRIBUTE_NAME, codeName); - return new Gson().toJson(map); - } + public static String getTestCodeAsJSON(final String codeName) { + final HashMap map = new HashMap<>(); + map.put(CODE_NAME_ATTRIBUTE_NAME, codeName); + return new Gson().toJson(map); + } - public static String getTestCodeValueAsJSON(final String codeValueName, final String description, final Integer position) { - final HashMap map = new HashMap<>(); - map.put(CODE_VALUE_NAME_ATTRIBUTE_NAME, codeValueName); - if (description != null) { - map.put(CODE_VALUE_DESCRIPTION_ATTRIBUTE_NAME, description); - } - map.put(CODE_VALUE_POSITION_ATTRIBUTE_NAME, position); - return new Gson().toJson(map); - } + public static String getTestCodeValueAsJSON(final String codeValueName, + final String description, final Integer position) { + final HashMap map = new HashMap<>(); + map.put(CODE_VALUE_NAME_ATTRIBUTE_NAME, codeValueName); + if (description != null) { + map.put(CODE_VALUE_DESCRIPTION_ATTRIBUTE_NAME, description); + } + map.put(CODE_VALUE_POSITION_ATTRIBUTE_NAME, position); + 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, - jsonAttributeToGetback); + 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) { - String description = null; - 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 Integer position, + final String jsonAttributeToGetback) { + String description = null; + 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, - final String jsonAttributeToGetback) { + 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); - } + return Utils.performServerPost(requestSpec, responseSpec, + CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "?" + + Utils.TENANT_IDENTIFIER, + getTestCodeValueAsJSON(codeValueName, description, position), + jsonAttributeToGetback); + } - public static List> getCodeValuesForCode(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, - final Integer codeId, final String jsonAttributeToGetback) { + public static List> 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()) + "?" - + Utils.TENANT_IDENTIFIER, jsonAttributeToGetback); - } + 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, - jsonAttributeToGetback); - } + return Utils.performServerGet(requestSpec, responseSpec, + 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) { + 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); - } + 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 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) { + 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); - } + return Utils.performServerPut(requestSpec, responseSpec, + CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/" + + codeValueId + "?" + Utils.TENANT_IDENTIFIER, + getTestCodeValueAsJSON(codeValueName, description, position), + jsonAttributeToGetback); + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java index 367c78e6e..26248d6e5 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java @@ -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 CLIENT_CLOSE_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName, dateFormatParamName, closureDateParamName, closureReasonIdParamName)); - public static final Set CLIENT_REJECT_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,rejectDateParamName,rejectReasonIdParamName)); + public static final Set CLIENT_REJECT_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,rejectionDateParamName,rejectionReasonIdParamName)); - public static final Set CLIENT_WITHDRAW_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,withdrawDateParamName,withdrawReasonIdParamName)); + public static final Set CLIENT_WITHDRAW_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName,dateFormatParamName,withdrawalDateParamName,withdrawalReasonIdParamName)); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java index cd2801c1f..b44ef65f4 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java @@ -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); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java index 383b7b756..d4c09d77b 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java @@ -139,11 +139,11 @@ public final class Client extends AbstractPersistable { @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 { @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 { 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(); } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java index eb8d50ad0..401092b03 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java @@ -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() //