FINERACT-1926: Remove unnecessary changes field from response
This commit is contained in:
+3
-10
@@ -24,7 +24,6 @@ import java.lang.reflect.Type;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -82,7 +81,7 @@ public class ExternalAssetOwnersWriteServiceImpl implements ExternalAssetOwnersW
|
||||
ExternalAssetOwnerTransfer externalAssetOwnerTransfer = createSaleTransfer(loanId, command.json(),
|
||||
loanIdAndExternalIdAndStatus.getExternalId());
|
||||
validateSale(externalAssetOwnerTransfer);
|
||||
externalAssetOwnerTransferRepository.save(externalAssetOwnerTransfer);
|
||||
externalAssetOwnerTransferRepository.saveAndFlush(externalAssetOwnerTransfer);
|
||||
return buildResponseData(externalAssetOwnerTransfer);
|
||||
}
|
||||
|
||||
@@ -96,7 +95,7 @@ public class ExternalAssetOwnersWriteServiceImpl implements ExternalAssetOwnersW
|
||||
validateSettlementDate(settlementDate);
|
||||
ExternalAssetOwnerTransfer effectiveTransfer = fetchAndValidateEffectiveTransferForBuyback(loanId, settlementDate);
|
||||
ExternalAssetOwnerTransfer externalAssetOwnerTransfer = createBuybackTransfer(effectiveTransfer, settlementDate, externalId);
|
||||
externalAssetOwnerTransferRepository.save(externalAssetOwnerTransfer);
|
||||
externalAssetOwnerTransferRepository.saveAndFlush(externalAssetOwnerTransfer);
|
||||
return buildResponseData(externalAssetOwnerTransfer);
|
||||
}
|
||||
|
||||
@@ -162,18 +161,12 @@ public class ExternalAssetOwnersWriteServiceImpl implements ExternalAssetOwnersW
|
||||
}
|
||||
|
||||
private CommandProcessingResult buildResponseData(ExternalAssetOwnerTransfer savedExternalAssetOwnerTransfer) {
|
||||
Map<String, Object> changes = new HashMap<>();
|
||||
changes.put(ExternalTransferRequestParameters.SETTLEMENT_DATE, savedExternalAssetOwnerTransfer.getSettlementDate());
|
||||
changes.put(ExternalTransferRequestParameters.OWNER_EXTERNAL_ID,
|
||||
savedExternalAssetOwnerTransfer.getOwner().getExternalId().getValue());
|
||||
changes.put(ExternalTransferRequestParameters.TRANSFER_EXTERNAL_ID, savedExternalAssetOwnerTransfer.getExternalId().getValue());
|
||||
changes.put(ExternalTransferRequestParameters.PURCHASE_PRICE_RATIO, savedExternalAssetOwnerTransfer.getPurchasePriceRatio());
|
||||
return new CommandProcessingResultBuilder().withEntityId(savedExternalAssetOwnerTransfer.getId())
|
||||
.withEntityExternalId(savedExternalAssetOwnerTransfer.getExternalId())
|
||||
.withSubEntityId(savedExternalAssetOwnerTransfer.getLoanId())
|
||||
.withSubEntityExternalId(Objects.isNull(savedExternalAssetOwnerTransfer.getExternalLoanId()) ? null
|
||||
: savedExternalAssetOwnerTransfer.getExternalLoanId())
|
||||
.with(changes).build();
|
||||
.build();
|
||||
}
|
||||
|
||||
private void validateSale(ExternalAssetOwnerTransfer externalAssetOwnerTransfer) {
|
||||
|
||||
+150
-103
@@ -85,7 +85,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
@ExtendWith(LoanTestLifecycleExtension.class)
|
||||
public class InitiateExternalAssetOwnerTransferTest {
|
||||
|
||||
public String ownerExternalId;
|
||||
private static ResponseSpecification RESPONSE_SPEC;
|
||||
private static RequestSpecification REQUEST_SPEC;
|
||||
private static Account ASSET_ACCOUNT;
|
||||
@@ -99,6 +98,7 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
private static LoanTransactionHelper LOAN_TRANSACTION_HELPER;
|
||||
private static SchedulerJobHelper SCHEDULER_JOB_HELPER;
|
||||
private static LocalDate TODAYS_DATE;
|
||||
public String ownerExternalId;
|
||||
private DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder().appendPattern("dd MMMM yyyy").toFormatter();
|
||||
|
||||
@BeforeAll
|
||||
@@ -139,28 +139,34 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
@Test
|
||||
public void saleActiveLoanToExternalAssetOwnerAndBuybackADayLater() {
|
||||
try {
|
||||
GlobalConfigurationHelper.manageConfigurations(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
GlobalConfigurationHelper.ENABLE_AUTOGENERATED_EXTERNAL_ID, true);
|
||||
setInitialBusinessDate("2020-03-02");
|
||||
Integer clientID = createClient();
|
||||
Integer loanID = createLoanForClient(clientID);
|
||||
addPenaltyForLoan(loanID, "10");
|
||||
|
||||
String transferExternalId = createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-02");
|
||||
PostInitiateTransferResponse saleTransferResponse = createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-02");
|
||||
validateResponse(saleTransferResponse, loanID);
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-02", "2020-03-02", "9999-12-31", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping(transferExternalId);
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-02",
|
||||
"9999-12-31", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping(saleTransferResponse.getResourceExternalId());
|
||||
PageExternalTransferData retrieveResponse = EXTERNAL_ASSET_OWNER_HELPER.retrieveTransfersByLoanId(loanID.longValue());
|
||||
retrieveResponse.getContent().forEach(transfer -> getAndValidateThereIsNoJournalEntriesForTransfer(transfer.getTransferId()));
|
||||
|
||||
updateBusinessDateAndExecuteCOBJob("2020-03-03");
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-02", "2020-03-02", "2020-03-02", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(ACTIVE, transferExternalId, "2020-03-02", "2020-03-03", "9999-12-31", true,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-02",
|
||||
"2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(ACTIVE, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-03",
|
||||
"9999-12-31", true, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsActiveMapping(loanID);
|
||||
retrieveResponse = EXTERNAL_ASSET_OWNER_HELPER.retrieveTransfersByLoanId(loanID.longValue());
|
||||
LocalDate expectedDate = LocalDate.of(2020, 3, 2);
|
||||
@@ -178,17 +184,21 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
ExpectedJournalEntryData.expected((long) TRANSFER_ACCOUNT.getAccountID(), (long) JournalEntryType.CREDIT.getValue(),
|
||||
BigDecimal.valueOf(15767.420000), expectedDate, expectedDate));
|
||||
|
||||
String buybackTransferExternalId = createExternalAssetOwnerTransfer(loanID, "buyback", "2020-03-03");
|
||||
PostInitiateTransferResponse buybackTransferResponse = createExternalAssetOwnerTransfer(loanID, "buyback", "2020-03-03");
|
||||
validateResponse(buybackTransferResponse, loanID);
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-02", "2020-03-02", "2020-03-02", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(ACTIVE, transferExternalId, "2020-03-02", "2020-03-03", "9999-12-31", true,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferExternalId, "2020-03-03", "2020-03-03", "9999-12-31",
|
||||
false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-02",
|
||||
"2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(ACTIVE, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-03",
|
||||
"9999-12-31", true, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferResponse.getResourceExternalId(), "2020-03-03",
|
||||
"2020-03-03", "9999-12-31", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsActiveMapping(loanID);
|
||||
retrieveResponse = EXTERNAL_ASSET_OWNER_HELPER.retrieveTransfersByLoanId(loanID.longValue());
|
||||
getAndValidateThereIsNoJournalEntriesForTransfer(retrieveResponse.getContent().get(2).getTransferId());
|
||||
@@ -208,16 +218,19 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
|
||||
updateBusinessDateAndExecuteCOBJob("2020-03-04");
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-02", "2020-03-02", "2020-03-02", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(ACTIVE, transferExternalId, "2020-03-02", "2020-03-03", "2020-03-03", true,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferExternalId, "2020-03-03", "2020-03-03", "2020-03-03",
|
||||
true, new BigDecimal("15762.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("5.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping(transferExternalId);
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-02",
|
||||
"2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(ACTIVE, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-03",
|
||||
"2020-03-03", true, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferResponse.getResourceExternalId(), "2020-03-03",
|
||||
"2020-03-03", "2020-03-03", true, new BigDecimal("15762.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("5.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping(saleTransferResponse.getResourceExternalId());
|
||||
retrieveResponse = EXTERNAL_ASSET_OWNER_HELPER.retrieveTransfersByLoanId(loanID.longValue());
|
||||
expectedDate = LocalDate.of(2020, 3, 3);
|
||||
getAndValidateThereIsJournalEntriesForTransfer(retrieveResponse.getContent().get(2).getTransferId(),
|
||||
@@ -256,47 +269,11 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
}
|
||||
}
|
||||
|
||||
private void getAndValidateOwnerJournalEntries(String ownerExternalId, ExpectedJournalEntryData... expectedItems) {
|
||||
ExternalOwnerJournalEntryData result = EXTERNAL_ASSET_OWNER_HELPER.retrieveJournalEntriesOfOwner(ownerExternalId);
|
||||
assertNotNull(result);
|
||||
assertEquals(expectedItems.length, result.getJournalEntryData().getTotalElements());
|
||||
int i = 0;
|
||||
assertEquals(ownerExternalId, result.getOwnerData().getExternalId());
|
||||
for (ExpectedJournalEntryData expectedJournalEntryData : expectedItems) {
|
||||
assertTrue(expectedJournalEntryData.amount.compareTo(result.getJournalEntryData().getContent().get(i).getAmount()) == 0);
|
||||
assertEquals(expectedJournalEntryData.entryTypeId, result.getJournalEntryData().getContent().get(i).getEntryType().getId());
|
||||
assertEquals(expectedJournalEntryData.glAccountId, result.getJournalEntryData().getContent().get(i).getGlAccountId());
|
||||
assertEquals(expectedJournalEntryData.transactionDate, result.getJournalEntryData().getContent().get(i).getTransactionDate());
|
||||
assertEquals(expectedJournalEntryData.submittedOnDate, result.getJournalEntryData().getContent().get(i).getSubmittedOnDate());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private void getAndValidateThereIsJournalEntriesForTransfer(Long transferId, ExpectedJournalEntryData... expectedItems) {
|
||||
ExternalOwnerTransferJournalEntryData result = EXTERNAL_ASSET_OWNER_HELPER.retrieveJournalEntriesOfTransfer(transferId);
|
||||
assertNotNull(result);
|
||||
long totalElements = result.getJournalEntryData().getTotalElements();
|
||||
assertEquals(expectedItems.length, totalElements);
|
||||
int i = 0;
|
||||
assertEquals(transferId, result.getTransferData().getTransferId());
|
||||
for (ExpectedJournalEntryData expectedJournalEntryData : expectedItems) {
|
||||
assertTrue(expectedJournalEntryData.amount.compareTo(result.getJournalEntryData().getContent().get(i).getAmount()) == 0);
|
||||
assertEquals(expectedJournalEntryData.entryTypeId, result.getJournalEntryData().getContent().get(i).getEntryType().getId());
|
||||
assertEquals(expectedJournalEntryData.glAccountId, result.getJournalEntryData().getContent().get(i).getGlAccountId());
|
||||
assertEquals(expectedJournalEntryData.transactionDate, result.getJournalEntryData().getContent().get(i).getTransactionDate());
|
||||
assertEquals(expectedJournalEntryData.submittedOnDate, result.getJournalEntryData().getContent().get(i).getSubmittedOnDate());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private void getAndValidateThereIsNoJournalEntriesForTransfer(Long transferId) {
|
||||
ExternalOwnerTransferJournalEntryData result = EXTERNAL_ASSET_OWNER_HELPER.retrieveJournalEntriesOfTransfer(transferId);
|
||||
assertNull(result.getJournalEntryData());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saleIsNotAllowedWhenTransferIsAlreadyPending() {
|
||||
try {
|
||||
GlobalConfigurationHelper.manageConfigurations(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
GlobalConfigurationHelper.ENABLE_AUTOGENERATED_EXTERNAL_ID, true);
|
||||
setInitialBusinessDate("2020-03-02");
|
||||
Integer clientID = createClient();
|
||||
Integer loanID = createLoanForClient(clientID);
|
||||
@@ -314,6 +291,8 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
@Test
|
||||
public void saleIsNotAllowedWhenLoanIsNotActive() {
|
||||
try {
|
||||
GlobalConfigurationHelper.manageConfigurations(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
GlobalConfigurationHelper.ENABLE_AUTOGENERATED_EXTERNAL_ID, true);
|
||||
setInitialBusinessDate("2020-03-02");
|
||||
Integer clientID = createClient();
|
||||
Integer loanID = createLoanForClient(clientID);
|
||||
@@ -333,38 +312,48 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
@Test
|
||||
public void saleAndBuybackOnTheSameDay() {
|
||||
try {
|
||||
GlobalConfigurationHelper.manageConfigurations(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
GlobalConfigurationHelper.ENABLE_AUTOGENERATED_EXTERNAL_ID, true);
|
||||
setInitialBusinessDate("2020-03-02");
|
||||
Integer clientID = createClient();
|
||||
Integer loanID = createLoanForClient(clientID);
|
||||
|
||||
String transferExternalId = createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-02");
|
||||
String buyBackTransferExternalId = createExternalAssetOwnerTransfer(loanID, "buyback", "2020-03-02");
|
||||
PostInitiateTransferResponse saleTransferResponse = createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-02");
|
||||
validateResponse(saleTransferResponse, loanID);
|
||||
PostInitiateTransferResponse buybackTransferResponse = createExternalAssetOwnerTransfer(loanID, "buyback", "2020-03-02");
|
||||
validateResponse(buybackTransferResponse, loanID);
|
||||
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-02", "2020-03-02", "9999-12-31", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buyBackTransferExternalId, "2020-03-02", "2020-03-02", "9999-12-31",
|
||||
false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping(transferExternalId);
|
||||
getAndValidateThereIsNoActiveMapping(buyBackTransferExternalId);
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-02",
|
||||
"9999-12-31", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferResponse.getResourceExternalId(), "2020-03-02",
|
||||
"2020-03-02", "9999-12-31", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping(saleTransferResponse.getResourceExternalId());
|
||||
getAndValidateThereIsNoActiveMapping(buybackTransferResponse.getResourceExternalId());
|
||||
|
||||
updateBusinessDateAndExecuteCOBJob("2020-03-03");
|
||||
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-02", "2020-03-02", "2020-03-02", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buyBackTransferExternalId, "2020-03-02", "2020-03-02", "2020-03-02",
|
||||
false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(CANCELLED, buyBackTransferExternalId, "2020-03-02", "2020-03-02", "2020-03-02",
|
||||
false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(CANCELLED, transferExternalId, "2020-03-02", "2020-03-02", "2020-03-02", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-02", "2020-03-02",
|
||||
"2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferResponse.getResourceExternalId(), "2020-03-02",
|
||||
"2020-03-02", "2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(CANCELLED, buybackTransferResponse.getResourceExternalId(), "2020-03-02",
|
||||
"2020-03-02", "2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(CANCELLED, saleTransferResponse.getResourceExternalId(), "2020-03-02",
|
||||
"2020-03-02", "2020-03-02", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
getAndValidateThereIsNoActiveMapping((long) loanID);
|
||||
} finally {
|
||||
cleanUpAndRestoreBusinessDate();
|
||||
@@ -374,20 +363,24 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
@Test
|
||||
public void saleAndBuybackMultipleTimes() {
|
||||
try {
|
||||
GlobalConfigurationHelper.manageConfigurations(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
GlobalConfigurationHelper.ENABLE_AUTOGENERATED_EXTERNAL_ID, true);
|
||||
setInitialBusinessDate("2020-03-02");
|
||||
Integer clientID = createClient();
|
||||
Integer loanID = createLoanForClient(clientID);
|
||||
|
||||
String transferExternalId = createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-04");
|
||||
String buybackTransferExternalId = createExternalAssetOwnerTransfer(loanID, "buyback", "2020-03-04");
|
||||
PostInitiateTransferResponse saleTransferResponse = createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-04");
|
||||
PostInitiateTransferResponse buybackTransferResponse = createExternalAssetOwnerTransfer(loanID, "buyback", "2020-03-04");
|
||||
|
||||
getAndValidateExternalAssetOwnerTransferByLoan(loanID,
|
||||
ExpectedExternalTransferData.expected(PENDING, transferExternalId, "2020-03-04", "2020-03-02", "9999-12-31", false,
|
||||
new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferExternalId, "2020-03-04", "2020-03-02", "9999-12-31",
|
||||
false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"), new BigDecimal("757.420000"),
|
||||
new BigDecimal("10.000000"), new BigDecimal("0.000000"), new BigDecimal("0.000000")));
|
||||
ExpectedExternalTransferData.expected(PENDING, saleTransferResponse.getResourceExternalId(), "2020-03-04", "2020-03-02",
|
||||
"9999-12-31", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")),
|
||||
ExpectedExternalTransferData.expected(BUYBACK, buybackTransferResponse.getResourceExternalId(), "2020-03-04",
|
||||
"2020-03-02", "9999-12-31", false, new BigDecimal("15767.420000"), new BigDecimal("15000.000000"),
|
||||
new BigDecimal("757.420000"), new BigDecimal("10.000000"), new BigDecimal("0.000000"),
|
||||
new BigDecimal("0.000000")));
|
||||
|
||||
CallFailedRuntimeException exception = assertThrows(CallFailedRuntimeException.class,
|
||||
() -> createExternalAssetOwnerTransfer(loanID, "sale", "2020-03-04"));
|
||||
@@ -407,7 +400,7 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
SCHEDULER_JOB_HELPER.executeAndAwaitJob("Loan COB");
|
||||
}
|
||||
|
||||
private String createExternalAssetOwnerTransfer(Integer loanID, String command, String settlementDate) {
|
||||
private PostInitiateTransferResponse createExternalAssetOwnerTransfer(Integer loanID, String command, String settlementDate) {
|
||||
String transferExternalId = UUID.randomUUID().toString();
|
||||
if (command.equals("sale")) {
|
||||
ownerExternalId = UUID.randomUUID().toString();
|
||||
@@ -416,14 +409,14 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
new PostInitiateTransferRequest().settlementDate(settlementDate).dateFormat("yyyy-MM-dd").locale("en")
|
||||
.transferExternalId(transferExternalId).ownerExternalId(ownerExternalId).purchasePriceRatio("1.0"));
|
||||
assertEquals(transferExternalId, saleResponse.getResourceExternalId());
|
||||
return transferExternalId;
|
||||
return saleResponse;
|
||||
}
|
||||
|
||||
private void addPenaltyForLoan(Integer loanID, String amount) {
|
||||
// Add Charge Penalty
|
||||
Integer penalty = ChargesHelper.createCharges(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, amount, true));
|
||||
Integer penalty1LoanChargeId = this.LOAN_TRANSACTION_HELPER.addChargesForLoan(loanID,
|
||||
Integer penalty1LoanChargeId = LOAN_TRANSACTION_HELPER.addChargesForLoan(loanID,
|
||||
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), "02 March 2020", amount));
|
||||
assertNotNull(penalty1LoanChargeId);
|
||||
}
|
||||
@@ -441,6 +434,8 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
RESPONSE_SPEC = new ResponseSpecBuilder().expectStatusCode(200).build();
|
||||
BusinessDateHelper.updateBusinessDate(REQUEST_SPEC, RESPONSE_SPEC, BUSINESS_DATE, TODAYS_DATE);
|
||||
GlobalConfigurationHelper.updateIsBusinessDateEnabled(REQUEST_SPEC, RESPONSE_SPEC, Boolean.FALSE);
|
||||
GlobalConfigurationHelper.manageConfigurations(REQUEST_SPEC, RESPONSE_SPEC,
|
||||
GlobalConfigurationHelper.ENABLE_AUTOGENERATED_EXTERNAL_ID, false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -564,13 +559,63 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
assertNull(activeTransfer);
|
||||
}
|
||||
|
||||
private void validateResponse(PostInitiateTransferResponse transferResponse, Integer loanID) {
|
||||
assertNotNull(transferResponse);
|
||||
assertNotNull(transferResponse.getResourceId());
|
||||
assertNotNull(transferResponse.getResourceExternalId());
|
||||
assertNotNull(transferResponse.getSubResourceId());
|
||||
assertEquals((long) loanID, transferResponse.getSubResourceId());
|
||||
assertNotNull(transferResponse.getSubResourceExternalId());
|
||||
assertNull(transferResponse.getChanges());
|
||||
}
|
||||
|
||||
private void getAndValidateOwnerJournalEntries(String ownerExternalId, ExpectedJournalEntryData... expectedItems) {
|
||||
ExternalOwnerJournalEntryData result = EXTERNAL_ASSET_OWNER_HELPER.retrieveJournalEntriesOfOwner(ownerExternalId);
|
||||
assertNotNull(result);
|
||||
assertEquals(expectedItems.length, result.getJournalEntryData().getTotalElements());
|
||||
int i = 0;
|
||||
assertEquals(ownerExternalId, result.getOwnerData().getExternalId());
|
||||
for (ExpectedJournalEntryData expectedJournalEntryData : expectedItems) {
|
||||
assertTrue(expectedJournalEntryData.amount.compareTo(result.getJournalEntryData().getContent().get(i).getAmount()) == 0);
|
||||
assertEquals(expectedJournalEntryData.entryTypeId, result.getJournalEntryData().getContent().get(i).getEntryType().getId());
|
||||
assertEquals(expectedJournalEntryData.glAccountId, result.getJournalEntryData().getContent().get(i).getGlAccountId());
|
||||
assertEquals(expectedJournalEntryData.transactionDate, result.getJournalEntryData().getContent().get(i).getTransactionDate());
|
||||
assertEquals(expectedJournalEntryData.submittedOnDate, result.getJournalEntryData().getContent().get(i).getSubmittedOnDate());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private void getAndValidateThereIsJournalEntriesForTransfer(Long transferId, ExpectedJournalEntryData... expectedItems) {
|
||||
ExternalOwnerTransferJournalEntryData result = EXTERNAL_ASSET_OWNER_HELPER.retrieveJournalEntriesOfTransfer(transferId);
|
||||
assertNotNull(result);
|
||||
long totalElements = result.getJournalEntryData().getTotalElements();
|
||||
assertEquals(expectedItems.length, totalElements);
|
||||
int i = 0;
|
||||
assertEquals(transferId, result.getTransferData().getTransferId());
|
||||
for (ExpectedJournalEntryData expectedJournalEntryData : expectedItems) {
|
||||
assertTrue(expectedJournalEntryData.amount.compareTo(result.getJournalEntryData().getContent().get(i).getAmount()) == 0);
|
||||
assertEquals(expectedJournalEntryData.entryTypeId, result.getJournalEntryData().getContent().get(i).getEntryType().getId());
|
||||
assertEquals(expectedJournalEntryData.glAccountId, result.getJournalEntryData().getContent().get(i).getGlAccountId());
|
||||
assertEquals(expectedJournalEntryData.transactionDate, result.getJournalEntryData().getContent().get(i).getTransactionDate());
|
||||
assertEquals(expectedJournalEntryData.submittedOnDate, result.getJournalEntryData().getContent().get(i).getSubmittedOnDate());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private void getAndValidateThereIsNoJournalEntriesForTransfer(Long transferId) {
|
||||
ExternalOwnerTransferJournalEntryData result = EXTERNAL_ASSET_OWNER_HELPER.retrieveJournalEntriesOfTransfer(transferId);
|
||||
assertNull(result.getJournalEntryData());
|
||||
}
|
||||
|
||||
@RequiredArgsConstructor()
|
||||
public static class ExpectedExternalTransferData {
|
||||
|
||||
private final ExternalTransferData.StatusEnum status;
|
||||
|
||||
private final String transferExternalId;
|
||||
|
||||
private final String settlementDate;
|
||||
|
||||
private final String effectiveFrom;
|
||||
private final String effectiveTo;
|
||||
private final boolean detailsExpected;
|
||||
@@ -596,7 +641,9 @@ public class InitiateExternalAssetOwnerTransferTest {
|
||||
public static class ExpectedJournalEntryData {
|
||||
|
||||
private final Long glAccountId;
|
||||
|
||||
private final Long entryTypeId;
|
||||
|
||||
private final BigDecimal amount;
|
||||
private final LocalDate transactionDate;
|
||||
private final LocalDate submittedOnDate;
|
||||
|
||||
Reference in New Issue
Block a user