Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package it.gov.pagopa.pu.debtpositions.service.create.receipt;

import it.gov.pagopa.pu.debtpositions.dto.generated.InstallmentStatus;
import it.gov.pagopa.pu.debtpositions.dto.generated.ReceiptDTO;
import it.gov.pagopa.pu.debtpositions.dto.generated.ReceiptWithAdditionalNodeDataDTO;
import it.gov.pagopa.pu.debtpositions.exception.custom.NotFoundException;
import it.gov.pagopa.pu.debtpositions.model.DebtPosition;
Expand Down Expand Up @@ -88,10 +87,13 @@ private void invalidOtherPaymentOptions(PaymentOption paymentOption) {
});
}

private void updateInstallmentStatusAndFeeOfDebtPosition(InstallmentNoPII installment, InstallmentStatus status, ReceiptDTO receipt) {
private void updateInstallmentStatusAndFeeOfDebtPosition(InstallmentNoPII installment, InstallmentStatus status, ReceiptWithAdditionalNodeDataDTO receipt) {
if (receipt != null) {
installment.setReceiptId(receipt.getReceiptId());
installment.setIur(receipt.getPaymentReceiptId());
if (StringUtils.isNotBlank(receipt.getBalance())) {
installment.setBalance(receipt.getBalance());
}
long feeAmountCents = receipt.getPaymentAmountCents() - installment.getAmountCents();
if (feeAmountCents > 0) {
log.debug("Set NotificationFeeCents for installmentId {} with amount: {}", installment.getInstallmentId(), feeAmountCents);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,20 @@
import it.gov.pagopa.pu.debtpositions.util.InstallmentUtils;
import it.gov.pagopa.pu.debtpositions.util.TestUtils;
import it.gov.pagopa.pu.debtpositions.util.faker.PaymentOptionFaker;

import java.util.*;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import uk.co.jemos.podam.api.PodamFactory;

import java.util.*;

import static it.gov.pagopa.pu.debtpositions.util.faker.DebtPositionTypeOrgFaker.buildDebtPositionTypeOrg;

@Slf4j
Expand All @@ -44,10 +45,12 @@ class InstallmentUpdateServiceTest {
private final PodamFactory podamFactory = TestUtils.getPodamFactory();
private static final String ACCESS_TOKEN = "accessToken";

@Test
void givenFoundDebtPositionWhenUpdateInstallmentStatusOfDebtPositionThenOk() {
@ParameterizedTest
@ValueSource(strings = { "", "BAL123" })
void givenFoundDebtPositionWhenUpdateInstallmentStatusOfDebtPositionThenOk(String balance) {
//given
ReceiptWithAdditionalNodeDataDTO receiptDTO = podamFactory.manufacturePojo(ReceiptWithAdditionalNodeDataDTO.class);
receiptDTO.setBalance(balance.isEmpty() ? null : balance);
InstallmentNoPII targetInstallment = PrimaryOrgInstallmentPaidVerifierServiceTest.getInstallment(
InstallmentStatus.UNPAID);
targetInstallment.setBalance(null);
Expand Down Expand Up @@ -115,10 +118,15 @@ void givenFoundDebtPositionWhenUpdateInstallmentStatusOfDebtPositionThenOk() {
targetInstallment.getInstallmentId())).thenReturn(debtPosition);
DebtPositionTypeOrg debtPositionTypeOrg = buildDebtPositionTypeOrg();
debtPositionTypeOrg.setBalance(null);
Mockito.when(debtPositionTypeOrgRepositoryMock.getDebtPositionTypeOrgByInstallmentId(targetInstallment.getInstallmentId()))
.thenReturn(debtPositionTypeOrg);
Mockito.when(balanceResolverServiceMock.getBalanceDefault(debtPosition.getOrganizationId(), debtPositionTypeOrg, ACCESS_TOKEN))
.thenReturn(null);
if (balance.isEmpty()) {
Mockito.when(debtPositionTypeOrgRepositoryMock.getDebtPositionTypeOrgByInstallmentId(targetInstallment.getInstallmentId()))
.thenReturn(debtPositionTypeOrg);
Mockito.when(balanceResolverServiceMock.getBalanceDefault(debtPosition.getOrganizationId(), debtPositionTypeOrg, ACCESS_TOKEN))
.thenReturn(null);
} else {
Mockito.when(balanceResolverServiceMock.resolveAmountBalance(debtPosition.getOrganizationId(), targetInstallment, ACCESS_TOKEN))
.thenReturn("balanceResolved");
}

//when
DebtPosition response = installmentUpdateService.updateInstallmentStatusOfDebtPosition(
Expand Down Expand Up @@ -159,14 +167,28 @@ void givenFoundDebtPositionWhenUpdateInstallmentStatusOfDebtPositionThenOk() {
});
Mockito.verify(debtPositionRepositoryMock, Mockito.times(1))
.findEntityGraphByInstallmentId(targetInstallment.getInstallmentId());
Mockito.verify(balanceResolverServiceMock, Mockito.times(0))
.resolveAmountBalance(debtPosition.getOrganizationId(), targetInstallment, ACCESS_TOKEN);
if (balance.isEmpty()) {
Mockito.verify(balanceResolverServiceMock, Mockito.times(0))
.resolveAmountBalance(debtPosition.getOrganizationId(), targetInstallment, ACCESS_TOKEN);
Mockito.verify(debtPositionTypeOrgRepositoryMock, Mockito.times(1))
.getDebtPositionTypeOrgByInstallmentId(targetInstallment.getInstallmentId());
Mockito.verify(balanceResolverServiceMock, Mockito.times(1))
.getBalanceDefault(debtPosition.getOrganizationId(), debtPositionTypeOrg, ACCESS_TOKEN);
} else {
Mockito.verify(balanceResolverServiceMock, Mockito.times(1))
.resolveAmountBalance(debtPosition.getOrganizationId(), targetInstallment, ACCESS_TOKEN);
Mockito.verify(debtPositionTypeOrgRepositoryMock, Mockito.times(0))
.getDebtPositionTypeOrgByInstallmentId(targetInstallment.getInstallmentId());
Mockito.verify(balanceResolverServiceMock, Mockito.times(0))
.getBalanceDefault(debtPosition.getOrganizationId(), debtPositionTypeOrg, ACCESS_TOKEN);
}
}

@Test
void givenDebtPositionWithBalanceNullWhenDebtPositionTypeOrgNotFoundThenException() {
//given
ReceiptWithAdditionalNodeDataDTO receiptDTO = podamFactory.manufacturePojo(ReceiptWithAdditionalNodeDataDTO.class);
receiptDTO.setBalance(null);
InstallmentNoPII targetInstallment = PrimaryOrgInstallmentPaidVerifierServiceTest.getInstallment(
InstallmentStatus.UNPAID);
targetInstallment.setBalance(null);
Expand Down