Skip to content

Commit

Permalink
fix: Fix fields sync status for installment (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
Benedetta-fabbri authored Jan 28, 2025
2 parents 7d3d036 + 825a016 commit 69f1fe4
Show file tree
Hide file tree
Showing 10 changed files with 459 additions and 368 deletions.
681 changes: 337 additions & 344 deletions openapi/generated.openapi.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions openapi/p4pa-debt-position.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -566,9 +566,9 @@ components:
type: object
properties:
syncStatusFrom:
type: string
$ref: "#/components/schemas/InstallmentStatus"
syncStatusTo:
type: string
$ref: "#/components/schemas/InstallmentStatus"
DebtPositionErrorDTO:
type: object
required:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,10 @@ public Installment mapToModel(InstallmentDTO dto) {
}

public InstallmentDTO mapToDto(InstallmentNoPII installment) {
return InstallmentDTO.builder()
InstallmentDTO installmentDTO = InstallmentDTO.builder()
.installmentId(installment.getInstallmentId())
.paymentOptionId(installment.getPaymentOptionId())
.status(installment.getStatus())
.syncStatus(InstallmentSyncStatus.builder().syncStatusFrom(installment.getSyncStatusFrom()).syncStatusTo(installment.getSyncStatusTo()).build())
.iupdPagopa(installment.getIupdPagopa())
.iud(installment.getIud())
.iuv(installment.getIuv())
Expand All @@ -75,9 +74,18 @@ public InstallmentDTO mapToDto(InstallmentNoPII installment) {
.creationDate(localDatetimeToOffsetDateTime(installment.getCreationDate()))
.updateDate(localDatetimeToOffsetDateTime(installment.getUpdateDate()))
.build();

if(installment.getSyncStatus() != null) {
InstallmentSyncStatus installmentSyncStatus = InstallmentSyncStatus.builder()
.syncStatusFrom(installment.getSyncStatus().getSyncStatusFrom())
.syncStatusTo(installment.getSyncStatus().getSyncStatusTo()).build();
installmentDTO.setSyncStatus(installmentSyncStatus);
}

return installmentDTO;
}

public InstallmentDTO mapToDto(Installment installment){
public InstallmentDTO mapToDto(Installment installment) {
return InstallmentDTO.builder()
.installmentId(installment.getInstallmentId())
.paymentOptionId(installment.getPaymentOptionId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ public Pair<InstallmentNoPII, InstallmentPIIDTO> map(Installment installment) {
installmentNoPII.setInstallmentId(installment.getInstallmentId());
installmentNoPII.setPaymentOptionId(installment.getPaymentOptionId());
installmentNoPII.setStatus(installment.getStatus());
installmentNoPII.setSyncStatusFrom(installment.getSyncStatus().getSyncStatusFrom());
installmentNoPII.setSyncStatusTo(installment.getSyncStatus().getSyncStatusTo());installmentNoPII.setIupdPagopa(installment.getIupdPagopa());
installmentNoPII.setIupdPagopa(installment.getIupdPagopa());
installmentNoPII.setIud(installment.getIud());
installmentNoPII.setIuv(installment.getIuv());
installmentNoPII.setIur(installment.getIur());
Expand All @@ -54,6 +53,12 @@ public Pair<InstallmentNoPII, InstallmentPIIDTO> map(Installment installment) {
installmentNoPII.setPersonalDataId(installment.getNoPII().getPersonalDataId());
}

if(installment.getSyncStatus() != null){
installmentNoPII.setSyncStatus(it.gov.pagopa.pu.debtpositions.model.InstallmentSyncStatus.builder()
.syncStatusFrom(installment.getSyncStatus().getSyncStatusFrom())
.syncStatusTo(installment.getSyncStatus().getSyncStatusTo()).build());
}

InstallmentPIIDTO installmentPIIDTO = InstallmentPIIDTO.builder()
.debtor(installment.getDebtor()).build();

Expand All @@ -62,14 +67,10 @@ public Pair<InstallmentNoPII, InstallmentPIIDTO> map(Installment installment) {

public Installment map(InstallmentNoPII installmentNoPII) {
InstallmentPIIDTO pii = personalDataService.get(installmentNoPII.getPersonalDataId(), InstallmentPIIDTO.class);
return Installment.builder()
Installment installment = Installment.builder()
.installmentId(installmentNoPII.getInstallmentId())
.paymentOptionId(installmentNoPII.getPaymentOptionId())
.status(installmentNoPII.getStatus())
.syncStatus(InstallmentSyncStatus.builder()
.syncStatusFrom(installmentNoPII.getSyncStatusFrom())
.syncStatusTo(installmentNoPII.getSyncStatusTo())
.build())
.iupdPagopa(installmentNoPII.getIupdPagopa())
.iud(installmentNoPII.getIud())
.iuv(installmentNoPII.getIuv())
Expand All @@ -91,5 +92,13 @@ public Installment map(InstallmentNoPII installmentNoPII) {
.transfers(Optional.ofNullable(installmentNoPII.getTransfers()).map(List::copyOf).orElse(List.of()))
.noPII(installmentNoPII)
.build();

if(installmentNoPII.getSyncStatus() != null) {
installment.setSyncStatus(InstallmentSyncStatus.builder()
.syncStatusFrom(installmentNoPII.getSyncStatus().getSyncStatusFrom())
.syncStatusTo(installmentNoPII.getSyncStatus().getSyncStatusTo())
.build());
}
return installment;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ public class InstallmentNoPII extends BaseEntity implements Serializable, Compar
private Long personalDataId;
private Character debtorEntityType;
private byte[] debtorFiscalCodeHash;
private String syncStatusFrom;
private String syncStatusTo;
@Embedded
private InstallmentSyncStatus syncStatus;

@OneToMany(mappedBy = "installmentId")
private SortedSet<Transfer> transfers;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package it.gov.pagopa.pu.debtpositions.model;

import it.gov.pagopa.pu.debtpositions.dto.generated.InstallmentStatus;
import jakarta.persistence.Embeddable;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Embeddable
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class InstallmentSyncStatus implements Serializable {

@Enumerated(EnumType.STRING)
private InstallmentStatus syncStatusFrom;
@Enumerated(EnumType.STRING)
private InstallmentStatus syncStatusTo;

}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,24 @@ void givenMapToDtoThenOk(){

reflectionEqualsByName(installmentExpected, result, "debtor");
checkNotNullFields(result, "debtor");
checkNotNullFields(result.getSyncStatus());
}

@Test
void givenMapToDtoWithNullSyncStatus(){
InstallmentDTO installmentExpected = buildInstallmentDTO();
installmentExpected.setStatus(InstallmentStatus.TO_SYNC);
installmentExpected.setSyncStatus(null);
InstallmentNoPII installmentNoPII = buildInstallmentNoPII();
installmentNoPII.setTransfers(new TreeSet<>(List.of(buildTransfer())));
installmentNoPII.setSyncStatus(null);

Mockito.when(transferMapperMock.mapToDto(buildTransfer())).thenReturn(buildTransferDTO());

InstallmentDTO result = installmentMapper.mapToDto(installmentNoPII);

reflectionEqualsByName(installmentExpected, result, "debtor");
checkNotNullFields(result, "debtor", "syncStatus");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.util.Pair;
import uk.co.jemos.podam.api.PodamFactory;

import static it.gov.pagopa.pu.debtpositions.util.TestUtils.checkNotNullFields;
import static it.gov.pagopa.pu.debtpositions.util.TestUtils.reflectionEqualsByName;
Expand All @@ -33,8 +32,8 @@ class InstallmentPIIMapperTest {
private PersonalDataService personalDataServiceMock;

@BeforeEach
void init(){
mapper = new InstallmentPIIMapper(dataCipherServiceMock,personalDataServiceMock);
void init() {
mapper = new InstallmentPIIMapper(dataCipherServiceMock, personalDataServiceMock);
}

@AfterEach
Expand All @@ -45,7 +44,7 @@ void verifyNotMoreInvocation() {
//region map(it.gov.pagopa.pu.debtpositions.dto.Installment)

@Test
void testMap(){
void testMap() {
InstallmentNoPII installmentNoPIIExpected = buildInstallmentNoPII();
InstallmentPIIDTO installmentPIIDTOExpected = buildInstallmentPIIDTO();

Expand All @@ -62,7 +61,7 @@ void testMap(){
}

@Test
void testMapWithNoPIINotNull(){
void testMapWithNoPIINotNull() {
InstallmentNoPII installmentNoPIIExpected = buildInstallmentNoPII();
InstallmentPIIDTO installmentPIIDTOExpected = buildInstallmentPIIDTO();

Expand All @@ -83,7 +82,7 @@ void testMapWithNoPIINotNull(){

//region map(it.gov.pagopa.pu.debtpositions.model.InstallmentNoPII)
@Test
void testMapInstallmentNoPII(){
void testMapInstallmentNoPII() {
//given
InstallmentNoPII installmentNoPII = buildInstallmentNoPII();
InstallmentPIIDTO installmentPIIDTO = buildInstallmentPIIDTO();
Expand All @@ -93,8 +92,43 @@ void testMapInstallmentNoPII(){
Installment result = mapper.map(installmentNoPII);
//then
TestUtils.checkNotNullFields(result);
TestUtils.checkNotNullFields(result.getSyncStatus());
Mockito.verify(personalDataServiceMock, Mockito.times(1)).get(installmentNoPII.getPersonalDataId(), InstallmentPIIDTO.class);
}
//endregion

@Test
void testMapInstallmentWithNullSyncStatus() {
InstallmentNoPII installmentNoPIIExpected = buildInstallmentNoPII();
InstallmentPIIDTO installmentPIIDTOExpected = buildInstallmentPIIDTO();
installmentNoPIIExpected.setSyncStatus(null);

Installment installment = buildInstallment();
installment.setSyncStatus(null);
byte[] expectedHashedCF = {};
Mockito.when(dataCipherServiceMock.hash(installment.getDebtor().getFiscalCode())).thenReturn(expectedHashedCF);

Pair<InstallmentNoPII, InstallmentPIIDTO> result = mapper.map(installment);

reflectionEqualsByName(installmentNoPIIExpected, result.getFirst());
reflectionEqualsByName(installmentPIIDTOExpected, result.getSecond());
checkNotNullFields(result.getFirst(), "transfers", "personalDataId",
"debtorFiscalCodeHash", "syncStatus");
checkNotNullFields(result.getSecond());
}

@Test
void testMapInstallmentNoPIIWithNullSyncStatus() {
//given
InstallmentNoPII installmentNoPII = buildInstallmentNoPII();
installmentNoPII.setSyncStatus(null);
InstallmentPIIDTO installmentPIIDTO = buildInstallmentPIIDTO();
Mockito.when(personalDataServiceMock.get(installmentNoPII.getPersonalDataId(), InstallmentPIIDTO.class)).thenReturn(installmentPIIDTO);

//when
Installment result = mapper.map(installmentNoPII);
//then
TestUtils.checkNotNullFields(result, "syncStatus");
Mockito.verify(personalDataServiceMock, Mockito.times(1)).get(installmentNoPII.getPersonalDataId(), InstallmentPIIDTO.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import it.gov.pagopa.pu.debtpositions.dto.generated.InstallmentDTO;
import it.gov.pagopa.pu.debtpositions.dto.generated.InstallmentStatus;
import it.gov.pagopa.pu.debtpositions.model.InstallmentNoPII;
import it.gov.pagopa.pu.debtpositions.model.InstallmentSyncStatus;

import java.time.LocalDateTime;
import java.time.OffsetDateTime;
Expand Down Expand Up @@ -56,8 +57,9 @@ public static InstallmentNoPII buildInstallmentNoPII(){
.installmentId(1L)
.paymentOptionId(1L)
.status(InstallmentStatus.TO_SYNC)
.syncStatusFrom("syncStatusFrom")
.syncStatusTo("syncStatusTo")
.syncStatus(InstallmentSyncStatus.builder()
.syncStatusFrom(InstallmentStatus.DRAFT)
.syncStatusTo(InstallmentStatus.UNPAID).build())
.iupdPagopa("iupdPagoPa")
.iud("iud")
.iuv("iuv")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package it.gov.pagopa.pu.debtpositions.util.faker;

import it.gov.pagopa.pu.debtpositions.dto.generated.InstallmentStatus;
import it.gov.pagopa.pu.debtpositions.dto.generated.InstallmentSyncStatus;

public class InstallmentSyncStatusFaker {

public static InstallmentSyncStatus buildInstallmentSyncStatus() {
return InstallmentSyncStatus.builder()
.syncStatusFrom("syncStatusFrom")
.syncStatusTo("syncStatusTo")
.syncStatusFrom(InstallmentStatus.DRAFT)
.syncStatusTo(InstallmentStatus.UNPAID)
.build();
}
}

0 comments on commit 69f1fe4

Please sign in to comment.