DEV Community

Shoaib Pinjari
Shoaib Pinjari

Posted on Edited on

shogu

@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)
);
Enter fullscreen mode Exit fullscreen mode

}

@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()
);
Enter fullscreen mode Exit fullscreen mode

}

@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()
);
Enter fullscreen mode Exit fullscreen mode

}

Top comments (0)