|
|
|
|
@ -7,6 +7,8 @@ import com.yau.digitalrmb.issuance.domain.model.IssuanceApplicationId;
|
|
|
|
|
import com.yau.digitalrmb.issuance.domain.model.IssuanceRequest;
|
|
|
|
|
import com.yau.digitalrmb.issuance.domain.model.IssuanceRequestStatus;
|
|
|
|
|
import com.yau.digitalrmb.issuance.domain.repository.IssuanceRequestRepository;
|
|
|
|
|
import com.yau.digitalrmb.issuance.infrastructure.persistence.entity.IssuanceBankInventoryEntity;
|
|
|
|
|
import com.yau.digitalrmb.issuance.infrastructure.persistence.mapper.IssuanceBankInventoryMapper;
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
|
|
|
@ -15,6 +17,7 @@ import org.springframework.test.context.ActiveProfiles;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.Instant;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Locale;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
|
@ -26,6 +29,9 @@ class MybatisIssuanceRequestRepositoryTest {
|
|
|
|
|
@Autowired
|
|
|
|
|
private IssuanceRequestRepository repository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IssuanceBankInventoryMapper inventoryMapper;
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void savesAndRestoresTheRequestWithItsDenominationsAndCentralBankStatus() {
|
|
|
|
|
IssuanceRequest sentRequest = sentRequest();
|
|
|
|
|
@ -35,7 +41,7 @@ class MybatisIssuanceRequestRepositoryTest {
|
|
|
|
|
IssuanceRequest restored = repository.findById(sentRequest.getId())
|
|
|
|
|
.orElseThrow(() -> new AssertionError("saved request was not restored"));
|
|
|
|
|
|
|
|
|
|
assertThat(restored.getRequestNo()).isEqualTo(sentRequest.getRequestNo());
|
|
|
|
|
assertThat(restored.getRequestNo()).isEqualTo("ISSUE_REQ_123456781234123412341234567890AB");
|
|
|
|
|
assertThat(restored.getBankCode()).isEqualTo("BKCHCNBJ00001");
|
|
|
|
|
assertThat(restored.getOrganizationId()).isEqualTo("ORG_3A4B5C6D7E8F");
|
|
|
|
|
assertThat(restored.getTotalAmount()).isEqualByComparingTo("50000.00");
|
|
|
|
|
@ -63,9 +69,25 @@ class MybatisIssuanceRequestRepositoryTest {
|
|
|
|
|
assertThat(inventory.getSuggestedSupplementAmount()).isEqualByComparingTo("50000.00");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void clampsSuggestedAmountToZeroWhenBalanceExceedsThreshold() {
|
|
|
|
|
IssuanceBankInventoryEntity inventory = new IssuanceBankInventoryEntity();
|
|
|
|
|
inventory.setBankCode("BKCLAMP00001");
|
|
|
|
|
inventory.setCurrentBalance(new BigDecimal("60000000.00"));
|
|
|
|
|
inventory.setWarningThreshold(new BigDecimal("50000000.00"));
|
|
|
|
|
inventory.setUpdatedAt(java.time.LocalDateTime.now());
|
|
|
|
|
inventoryMapper.insert(inventory);
|
|
|
|
|
|
|
|
|
|
IssuanceBankInventory restored = repository.findInventoryByBankCode("BKCLAMP00001")
|
|
|
|
|
.orElseThrow(() -> new AssertionError("inventory was not restored"));
|
|
|
|
|
|
|
|
|
|
assertThat(restored.getSuggestedSupplementAmount()).isEqualByComparingTo("0.00");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void savingChangedDraftReplacesRatherThanAccumulatesDenominations() {
|
|
|
|
|
IssuanceRequest request = IssuanceRequest.create(new IssuanceApplicationId(UUID.randomUUID()),
|
|
|
|
|
UUID id = UUID.randomUUID();
|
|
|
|
|
IssuanceRequest request = IssuanceRequest.create(new IssuanceApplicationId(id), requestNo(id),
|
|
|
|
|
"BKCHCNBJ00001", "ORG_3A4B5C6D7E8F", new BigDecimal("50000.00"), "DC",
|
|
|
|
|
Arrays.asList(new DenominationItem(100, 400), new DenominationItem(50, 200)));
|
|
|
|
|
repository.save(request);
|
|
|
|
|
@ -79,7 +101,9 @@ class MybatisIssuanceRequestRepositoryTest {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IssuanceRequest sentRequest() {
|
|
|
|
|
IssuanceRequest request = IssuanceRequest.create(new IssuanceApplicationId(UUID.randomUUID()),
|
|
|
|
|
UUID id = UUID.fromString("12345678-1234-1234-1234-1234567890ab");
|
|
|
|
|
IssuanceRequest request = IssuanceRequest.create(new IssuanceApplicationId(id),
|
|
|
|
|
"ISSUE_REQ_123456781234123412341234567890AB",
|
|
|
|
|
"BKCHCNBJ00001", "ORG_3A4B5C6D7E8F", new BigDecimal("50000.00"), "DC",
|
|
|
|
|
Arrays.asList(new DenominationItem(100, 400), new DenominationItem(50, 200)));
|
|
|
|
|
request.prepareMessage("20260801103218", "ISSUE|BKCHCNBJ00001|ORG_3A4B5C6D7E8F|50000.00");
|
|
|
|
|
@ -89,4 +113,8 @@ class MybatisIssuanceRequestRepositoryTest {
|
|
|
|
|
request.sendToCentralBank(Instant.parse("2026-08-03T12:00:00Z"));
|
|
|
|
|
return request;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String requestNo(UUID id) {
|
|
|
|
|
return "ISSUE_REQ_" + id.toString().replace("-", "").toUpperCase(Locale.ROOT);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|