@@ -414,6 +414,47 @@ public void loanOwnershipTransferBusinessEventWithStatusCheck(Long loanId, Long
414414 .isEqualTo (transferStatusReasonExpected );
415415 }
416416
417+ public void loanOwnershipTransferBusinessEventWithTypeCheck (Long loanId , ExternalTransferData transferData , String transferType ,
418+ String previousAssetOwner ) throws IOException {
419+ Response <PageExternalTransferData > response = externalAssetOwnersApi .getTransfers (null , loanId , null , null , null ).execute ();
420+ List <ExternalTransferData > content = response .body ().getContent ();
421+ Long transferId = transferData .getTransferId ();
422+ String assetOwner = transferData .getOwner () == null ? null : transferData .getOwner ().getExternalId ();
423+
424+ ExternalTransferData filtered = content .stream ().filter (t -> transferId .equals (t .getTransferId ())).reduce ((first , second ) -> second )
425+ .orElseThrow (() -> new IllegalStateException ("No element found" ));
426+
427+ BigDecimal totalOutstandingBalanceAmountExpected = filtered .getDetails () == null ? null
428+ : zeroConversion (filtered .getDetails ().getTotalOutstanding ());
429+ BigDecimal outstandingPrincipalPortionExpected = filtered .getDetails () == null ? null
430+ : zeroConversion (filtered .getDetails ().getTotalPrincipalOutstanding ());
431+ BigDecimal outstandingFeePortionExpected = filtered .getDetails () == null ? null
432+ : zeroConversion (filtered .getDetails ().getTotalFeeChargesOutstanding ());
433+ BigDecimal outstandingPenaltyPortionExpected = filtered .getDetails () == null ? null
434+ : zeroConversion (filtered .getDetails ().getTotalPenaltyChargesOutstanding ());
435+ BigDecimal outstandingInterestPortionExpected = filtered .getDetails () == null ? null
436+ : zeroConversion (filtered .getDetails ().getTotalInterestOutstanding ());
437+ BigDecimal overPaymentPortionExpected = filtered .getDetails () == null ? null
438+ : zeroConversion (filtered .getDetails ().getTotalOverpaid ());
439+
440+ eventAssertion .assertEvent (LoanOwnershipTransferEvent .class , loanId ).extractingData (LoanOwnershipTransferDataV1 ::getLoanId )
441+ .isEqualTo (loanId ).extractingData (LoanOwnershipTransferDataV1 ::getAssetOwnerExternalId )
442+ .isEqualTo (filtered .getOwner ().getExternalId ()).extractingData (LoanOwnershipTransferDataV1 ::getTransferExternalId )
443+ .isEqualTo (filtered .getTransferExternalId ()).extractingData (LoanOwnershipTransferDataV1 ::getSettlementDate )
444+ .isEqualTo (FORMATTER_EVENTS .format (filtered .getSettlementDate ()))
445+ .extractingBigDecimal (LoanOwnershipTransferDataV1 ::getTotalOutstandingBalanceAmount )
446+ .isEqualTo (totalOutstandingBalanceAmountExpected )
447+ .extractingBigDecimal (LoanOwnershipTransferDataV1 ::getOutstandingPrincipalPortion )
448+ .isEqualTo (outstandingPrincipalPortionExpected ).extractingBigDecimal (LoanOwnershipTransferDataV1 ::getOutstandingFeePortion )
449+ .isEqualTo (outstandingFeePortionExpected ).extractingBigDecimal (LoanOwnershipTransferDataV1 ::getOutstandingPenaltyPortion )
450+ .isEqualTo (outstandingPenaltyPortionExpected )
451+ .extractingBigDecimal (LoanOwnershipTransferDataV1 ::getOutstandingInterestPortion )
452+ .isEqualTo (outstandingInterestPortionExpected ).extractingBigDecimal (LoanOwnershipTransferDataV1 ::getOverPaymentPortion )
453+ .isEqualTo (overPaymentPortionExpected ).extractingData (LoanOwnershipTransferDataV1 ::getType ).isEqualTo (transferType )
454+ .extractingData (LoanOwnershipTransferDataV1 ::getAssetOwnerExternalId ).isEqualTo (assetOwner )
455+ .extractingData (LoanOwnershipTransferDataV1 ::getPreviousOwnerExternalId ).isEqualTo (previousAssetOwner );
456+ }
457+
417458 public void loanAccountSnapshotBusinessEventCheck (Long loanId , Long transferId ) throws IOException {
418459 Response <PageExternalTransferData > response = externalAssetOwnersApi .getTransfers (null , loanId , null , null , null ).execute ();
419460 List <ExternalTransferData > content = response .body ().getContent ();
0 commit comments