Skip to content

Commit

Permalink
[SELC-5307] feat: set supportPhone and supportEmail in createInstitut…
Browse files Browse the repository at this point in the history
…ionFromAnac and update institution if it already exists (#20)
  • Loading branch information
giulia-tremolada authored Aug 7, 2024
1 parent fc631ce commit 9adeb19
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,8 @@ public Institution createInstitutionFromAnac(Institution institution) {
.subunitType(Optional.ofNullable(institution.getSubunitType())
.map(InstitutionPaSubunitType::valueOf)
.orElse(null))
.supportEmail(institution.getSupportEmail())
.supportPhone(institution.getSupportPhone())
.build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,19 @@
import it.pagopa.selfcare.mscore.exception.MsCoreException;
import it.pagopa.selfcare.mscore.model.institution.Institution;
import it.pagopa.selfcare.mscore.model.institution.SaResource;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import java.time.OffsetDateTime;
import java.util.List;

import static it.pagopa.selfcare.mscore.constant.GenericError.CREATE_INSTITUTION_ERROR;

@Slf4j
public class CreateInstitutionStrategyAnac extends CreateInstitutionStrategyCommon implements CreateInstitutionStrategy {
private final PartyRegistryProxyConnector partyRegistryProxyConnector;

@Setter
private Institution institution;

public CreateInstitutionStrategyAnac(PartyRegistryProxyConnector partyRegistryProxyConnector,
Expand All @@ -25,18 +28,25 @@ public CreateInstitutionStrategyAnac(PartyRegistryProxyConnector partyRegistryPr
this.partyRegistryProxyConnector = partyRegistryProxyConnector;
}

public void setInstitution(Institution institution) {
this.institution = institution;
}

@Override
public Institution createInstitution(CreateInstitutionStrategyInput strategyInput) {

checkIfAlreadyExistsByTaxCodeAndSubunitCode(strategyInput.getTaxCode(), strategyInput.getSubunitCode());
List<Institution> institutions = institutionConnector.findByTaxCodeAndSubunitCode(strategyInput.getTaxCode(), strategyInput.getSubunitCode());

if (institutions.isEmpty()) {

SaResource saResource = partyRegistryProxyConnector.getSAFromAnac(strategyInput.getTaxCode());

SaResource saResource = partyRegistryProxyConnector.getSAFromAnac(strategyInput.getTaxCode());
institution = addFieldsToInstitution(saResource);

setContacts(strategyInput, institution);

} else {
//Institution exists but other fields could be updated
institution = institutions.get(0);
setUpdatedFields(strategyInput, institution);
}

institution = addFieldsToInstitution(saResource);
try {
return institutionConnector.save(institution);
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,35 @@ void shouldThrowExceptionOnCreateInstitutionIfAlreadyExists() {
.build()));
}

/**
* Method under test: {@link CreateInstitutionStrategy#createInstitution(CreateInstitutionStrategyInput)}
*/
@Test
void shouldCreateInstitutionFromAnacIfAlreadyExists() {

Institution institution = new Institution();
institution.setId("id");

when(institutionConnector.findByTaxCodeAndSubunitCode(any(), any())). thenReturn(List.of(institution));
when(institutionConnector.save(any())).thenAnswer(args -> args.getArguments()[0]);

//When
Institution actual = strategyFactory.createInstitutionStrategyAnac(institution)
.createInstitution(CreateInstitutionStrategyInput.builder()
.taxCode(institution.getTaxCode())
.supportPhone(SUPPORT_PHONE)
.supportEmail(SUPPORT_EMAIL)
.build());

//Then
assertThat(actual.getTaxCode()).isEqualTo(institution.getTaxCode());
assertThat(actual.getSubunitCode()).isNull();
assertThat(actual.getSupportPhone()).isEqualTo(SUPPORT_PHONE);
assertThat(actual.getSupportEmail()).isEqualTo(SUPPORT_EMAIL);

verify(institutionConnector).save(any());
}

/**
* Method under test: {@link CreateInstitutionStrategy#createInstitution(CreateInstitutionStrategyInput)}
*/
Expand All @@ -179,6 +208,8 @@ void shouldCreateInstitutionFromAnac() {
Institution actual = strategyFactory.createInstitutionStrategyAnac(institution)
.createInstitution(CreateInstitutionStrategyInput.builder()
.taxCode(institution.getTaxCode())
.supportPhone(SUPPORT_PHONE)
.supportEmail(SUPPORT_EMAIL)
.build());

//Then
Expand All @@ -191,6 +222,8 @@ void shouldCreateInstitutionFromAnac() {
assertThat(actual.getSubunitType()).isNull();
assertThat(actual.getInstitutionType()).isEqualTo(InstitutionType.SA);
assertThat(actual.getSubunitType()).isNull();
assertThat(actual.getSupportPhone()).isEqualTo(SUPPORT_PHONE);
assertThat(actual.getSupportEmail()).isEqualTo(SUPPORT_EMAIL);

verify(institutionConnector).save(any());
}
Expand Down

0 comments on commit 9adeb19

Please sign in to comment.