Skip to content

Commit

Permalink
[SELC-5308] feat: add contacts to createInstitutionFromIvass and upda…
Browse files Browse the repository at this point in the history
…te Institution if it already exists (#21)
  • Loading branch information
giulia-tremolada authored Aug 7, 2024
1 parent 9adeb19 commit bfaeb3f
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ public Institution createInstitutionFromIvass(Institution institution) {
return createInstitutionStrategyFactory.createInstitutionStrategyIvass(institution)
.createInstitution(CreateInstitutionStrategyInput.builder()
.ivassCode(institution.getOriginId())
.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.ASResource;
import it.pagopa.selfcare.mscore.model.institution.Institution;
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 CreateInstitutionStrategyIvass extends CreateInstitutionStrategyCommon implements CreateInstitutionStrategy {
private final PartyRegistryProxyConnector partyRegistryProxyConnector;

@Setter
private Institution institution;

public CreateInstitutionStrategyIvass(PartyRegistryProxyConnector partyRegistryProxyConnector,
Expand All @@ -25,17 +28,25 @@ public CreateInstitutionStrategyIvass(PartyRegistryProxyConnector partyRegistryP
this.partyRegistryProxyConnector = partyRegistryProxyConnector;
}

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

@Override
public Institution createInstitution(CreateInstitutionStrategyInput strategyInput) {
checkIfAlreadyExistByOriginAndOriginId(Origin.IVASS.name(), strategyInput.getIvassCode());

ASResource asResource = partyRegistryProxyConnector.getASFromIvass(strategyInput.getIvassCode());
List<Institution> institutions = institutionConnector.findByOriginAndOriginId(Origin.IVASS.name(), strategyInput.getIvassCode());

if (institutions.isEmpty()) {

ASResource asResource = partyRegistryProxyConnector.getASFromIvass(strategyInput.getIvassCode());

institution = addFieldsToInstitution(asResource);

setContacts(strategyInput, institution);

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

institution = addFieldsToInstitution(asResource);
try {
return institutionConnector.save(institution);
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,16 +139,29 @@ void shouldThrowExceptionOnCreateInstitutionFromIpaIfAlreadyExists() {
}

@Test
void shouldThrowMsCoreExceptionWhenInstitutionAlreadyExists() {
void shouldCreateInstitutionFromIvassIfAlreadyExists() {
String origin = "IVASS";
String originId = "12345";

when(institutionConnector.findByOriginAndOriginId(origin, originId)).thenReturn(List.of(new Institution()));
Institution institution = new Institution();
institution.setId("id");
institution.setOrigin(origin);
institution.setOriginId(originId);

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

assertThrows(ResourceConflictException.class, () -> strategyFactory.createInstitutionStrategyIvass(new Institution())

Institution actual = strategyFactory.createInstitutionStrategyIvass(new Institution())
.createInstitution(CreateInstitutionStrategyInput.builder()
.ivassCode(originId)
.build()));
.supportEmail(SUPPORT_EMAIL)
.supportPhone(SUPPORT_PHONE)
.build());

assertThat(actual.getSupportEmail()).isEqualTo(SUPPORT_EMAIL);
assertThat(actual.getSupportPhone()).isEqualTo(SUPPORT_PHONE);
verifyNoInteractions(partyRegistryProxyConnector);
}

@Test
Expand Down

0 comments on commit bfaeb3f

Please sign in to comment.