@test
@DisplayName("Should validate successfully when EOD rate is available in legacy database")
void shouldValidateWhenEodRateIsAvailable() {
LocalDate businessDate =
segmentBusinessDatesService.getCurrentBusinessDate();
ForexMtmRate legacyRate = ForexMtmRate.builder()
.businessDate(businessDate)
.tradeType(SPOT.getValue())
.processIdentifier(MTMEOD.getValue())
.rate(new BigDecimal("85.50"))
.build();
forexMtmRateRepository.save(legacyRate);
MtmRatesRequestDto dto = new MtmRatesRequestDto();
dto.setCurrencyCode("USD");
dto.setExchangeRate(new BigDecimal("85.50"));
dto.setHaircutAcceptance(false);
dto.setRateType(EOD.toString());
List<MtmRatesRequestDto> requestList =
List.of(dto);
assertDoesNotThrow(
() -> mtmRatesService.validateMtmRates(requestList)
);
}
@test
@DisplayName("Should throw exception when EOD rate is not available in legacy database")
void shouldThrowExceptionWhenEodRateIsNotAvailable() {
MtmRatesRequestDto dto = new MtmRatesRequestDto();
dto.setCurrencyCode("USD");
dto.setExchangeRate(new BigDecimal("85.50"));
dto.setHaircutAcceptance(false);
dto.setRateType(EOD.toString());
List<MtmRatesRequestDto> requestList =
List.of(dto);
BusinessValidationException exception =
assertThrows(
BusinessValidationException.class,
() -> mtmRatesService.validateMtmRates(requestList)
);
assertEquals(
"USD/INR EOD rates not Uploaded",
exception.getMessage()
);
}
@test
@DisplayName("Should throw exception when EOD legacy record exists but rate is null")
void shouldThrowExceptionWhenLegacyEodRateIsNull() {
LocalDate businessDate =
segmentBusinessDatesService.getCurrentBusinessDate();
ForexMtmRate legacyRate = ForexMtmRate.builder()
.businessDate(businessDate)
.tradeType(SPOT.getValue())
.processIdentifier(MTMEOD.getValue())
.rate(null)
.build();
forexMtmRateRepository.save(legacyRate);
MtmRatesRequestDto dto = new MtmRatesRequestDto();
dto.setCurrencyCode("USD");
dto.setExchangeRate(new BigDecimal("85.50"));
dto.setHaircutAcceptance(false);
dto.setRateType(EOD.toString());
List<MtmRatesRequestDto> requestList =
List.of(dto);
BusinessValidationException exception =
assertThrows(
BusinessValidationException.class,
() -> mtmRatesService.validateMtmRates(requestList)
);
assertEquals(
"USD/INR EOD rates not Uploaded",
exception.getMessage()
);
}
Top comments (0)