generated from pagopa/pagopa-functions-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: added new AdditionalInformations Object
- Loading branch information
1 parent
d554876
commit 5137ea4
Showing
9 changed files
with
220 additions
and
6 deletions.
There are no files selected for viewing
16 changes: 16 additions & 0 deletions
16
.../java/it/pagopa/selfcare/onboarding/controller/request/AdditionalInformationsRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package it.pagopa.selfcare.onboarding.controller.request; | ||
|
||
import lombok.Data; | ||
|
||
@Data | ||
public class AdditionalInformationsRequest { | ||
private boolean belongRegulatedMarket; | ||
private String regulatedMarketNote; | ||
private boolean ipa; | ||
private String ipaCode; | ||
private boolean establishedByRegulatoryProvision; | ||
private String establishedByRegulatoryProvisionNote; | ||
private boolean agentOfPublicService; | ||
private String agentOfPublicServiceNote; | ||
private String otherNote; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
...ava/it/pagopa/selfcare/onboarding/controller/response/AdditionalInformationsResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package it.pagopa.selfcare.onboarding.controller.response; | ||
|
||
import lombok.Data; | ||
|
||
@Data | ||
public class AdditionalInformationsResponse { | ||
private boolean belongRegulatedMarket; | ||
private String regulatedMarketNote; | ||
private boolean ipa; | ||
private String ipaCode; | ||
private boolean establishedByRegulatoryProvision; | ||
private String establishedByRegulatoryProvisionNote; | ||
private boolean agentOfPublicService; | ||
private String agentOfPublicServiceNote; | ||
private String otherNote; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
...oarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/AdditionalInformations.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package it.pagopa.selfcare.onboarding.entity; | ||
|
||
import lombok.Data; | ||
|
||
@Data | ||
public class AdditionalInformations { | ||
private boolean belongRegulatedMarket; | ||
private String regulatedMarketNote; | ||
private boolean ipa; | ||
private String ipaCode; | ||
private boolean establishedByRegulatoryProvision; | ||
private String establishedByRegulatoryProvisionNote; | ||
private boolean agentOfPublicService; | ||
private String agentOfPublicServiceNote; | ||
private String otherNote; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
...boarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package it.pagopa.selfcare.onboarding.service.util; | ||
|
||
import io.smallrye.mutiny.Uni; | ||
import it.pagopa.selfcare.onboarding.common.InstitutionType; | ||
import it.pagopa.selfcare.onboarding.common.ProductId; | ||
import it.pagopa.selfcare.onboarding.entity.Onboarding; | ||
import it.pagopa.selfcare.onboarding.exception.InvalidRequestException; | ||
|
||
import java.util.Objects; | ||
|
||
public class OnboardingUtils { | ||
|
||
private static final String ADDITIONAL_INFORMATIONS_REQUIRED = "Additional Informations is required when institutionType is GSP and productId is pagopa"; | ||
private static final String OTHER_NOTE_REQUIRED = "Other Note is required when other boolean are false"; | ||
|
||
public static Uni<Onboarding> customValidationOnboardingData(Onboarding onboarding) { | ||
if(InstitutionType.GSP == onboarding.getInstitution().getInstitutionType() && | ||
ProductId.PROD_PAGOPA.getValue().equals(onboarding.getProductId())) { | ||
if(Objects.isNull(onboarding.getAdditionalInformations())) { | ||
return Uni.createFrom().failure(new InvalidRequestException(ADDITIONAL_INFORMATIONS_REQUIRED)); | ||
} | ||
else if (!onboarding.getAdditionalInformations().isIpa() && | ||
!onboarding.getAdditionalInformations().isBelongRegulatedMarket() && | ||
!onboarding.getAdditionalInformations().isEstablishedByRegulatoryProvision() && | ||
!onboarding.getAdditionalInformations().isAgentOfPublicService() && | ||
Objects.isNull(onboarding.getAdditionalInformations().getOtherNote())){ | ||
return Uni.createFrom().failure(new InvalidRequestException(OTHER_NOTE_REQUIRED)); | ||
} | ||
} | ||
return Uni.createFrom().item(onboarding); | ||
} | ||
|
||
} |
129 changes: 129 additions & 0 deletions
129
...ding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtilsTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
package it.pagopa.selfcare.onboarding.service.util; | ||
|
||
import io.quarkus.panache.mock.PanacheMock; | ||
import io.quarkus.test.common.QuarkusTestResource; | ||
import io.quarkus.test.junit.QuarkusTest; | ||
import io.quarkus.test.mongodb.MongoTestResource; | ||
import io.quarkus.test.vertx.UniAsserter; | ||
import io.smallrye.mutiny.Uni; | ||
import io.smallrye.mutiny.helpers.test.UniAssertSubscriber; | ||
import it.pagopa.selfcare.onboarding.common.InstitutionType; | ||
import it.pagopa.selfcare.onboarding.common.ProductId; | ||
import it.pagopa.selfcare.onboarding.controller.response.OnboardingGet; | ||
import it.pagopa.selfcare.onboarding.entity.AdditionalInformations; | ||
import it.pagopa.selfcare.onboarding.entity.Institution; | ||
import it.pagopa.selfcare.onboarding.entity.Onboarding; | ||
import it.pagopa.selfcare.onboarding.exception.InvalidRequestException; | ||
import org.bson.types.ObjectId; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.params.ParameterizedTest; | ||
import org.junit.jupiter.params.provider.ValueSource; | ||
import org.wildfly.common.Assert; | ||
|
||
import javax.inject.Inject; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; | ||
import static org.junit.jupiter.api.Assertions.assertThrows; | ||
import static org.mockito.ArgumentMatchers.any; | ||
import static org.mockito.Mockito.mock; | ||
import static org.mockito.Mockito.when; | ||
|
||
@QuarkusTest | ||
@QuarkusTestResource(MongoTestResource.class) | ||
public class OnboardingUtilsTest { | ||
|
||
|
||
@ParameterizedTest | ||
@ValueSource(strings = {"ipa", "regulatedMarket", "establishedByRegulatoryProvision", "agentOfPublicService"}) | ||
void shouldOnboardingInstitutionWithAdditionalInfo(String type) { | ||
Onboarding onboarding = new Onboarding(); | ||
Institution institution = new Institution(); | ||
institution.setInstitutionType(InstitutionType.GSP); | ||
onboarding.setInstitution(institution); | ||
onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); | ||
onboarding.setAdditionalInformations(createSimpleAdditionalInformations(type)); | ||
|
||
UniAssertSubscriber<Onboarding> subscriber = OnboardingUtils | ||
.customValidationOnboardingData(onboarding) | ||
.subscribe() | ||
.withSubscriber(UniAssertSubscriber.create()); | ||
|
||
Onboarding actual = subscriber.awaitItem().getItem(); | ||
Assert.assertNotNull(actual); | ||
} | ||
|
||
@Test | ||
void shouldOnboardingInstitutionWithAdditionalInfoRequiredException() { | ||
|
||
Onboarding onboarding = new Onboarding(); | ||
Institution institution = new Institution(); | ||
institution.setInstitutionType(InstitutionType.GSP); | ||
onboarding.setInstitution(institution); | ||
onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); | ||
onboarding.setAdditionalInformations(createSimpleAdditionalInformations("other")); | ||
|
||
UniAssertSubscriber<Onboarding> subscriber = OnboardingUtils | ||
.customValidationOnboardingData(onboarding) | ||
.subscribe() | ||
.withSubscriber(UniAssertSubscriber.create()); | ||
|
||
subscriber.assertFailedWith(InvalidRequestException.class); | ||
|
||
} | ||
|
||
@Test | ||
void shouldOnboardingInstitutionWithOtherNoteRequiredException() { | ||
|
||
Onboarding onboarding = new Onboarding(); | ||
Institution institution = new Institution(); | ||
institution.setInstitutionType(InstitutionType.GSP); | ||
onboarding.setInstitution(institution); | ||
onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); | ||
|
||
UniAssertSubscriber<Onboarding> subscriber = OnboardingUtils | ||
.customValidationOnboardingData(onboarding) | ||
.subscribe() | ||
.withSubscriber(UniAssertSubscriber.create()); | ||
|
||
subscriber.assertFailedWith(InvalidRequestException.class); | ||
|
||
} | ||
|
||
|
||
private static AdditionalInformations createSimpleAdditionalInformations(String type) { | ||
AdditionalInformations additionalInformations = new AdditionalInformations(); | ||
switch (type) { | ||
case "ipa": | ||
additionalInformations.setIpa(true); | ||
additionalInformations.setBelongRegulatedMarket(false); | ||
additionalInformations.setEstablishedByRegulatoryProvision(false); | ||
additionalInformations.setAgentOfPublicService(false); | ||
break; | ||
case "regulatedMarket": | ||
additionalInformations.setIpa(false); | ||
additionalInformations.setBelongRegulatedMarket(true); | ||
additionalInformations.setEstablishedByRegulatoryProvision(false); | ||
additionalInformations.setAgentOfPublicService(false); | ||
break; | ||
case "establishedByRegulatoryProvision": | ||
additionalInformations.setIpa(false); | ||
additionalInformations.setBelongRegulatedMarket(false); | ||
additionalInformations.setEstablishedByRegulatoryProvision(true); | ||
additionalInformations.setAgentOfPublicService(false); | ||
break; | ||
case "agentOfPublicService": | ||
additionalInformations.setIpa(false); | ||
additionalInformations.setBelongRegulatedMarket(false); | ||
additionalInformations.setEstablishedByRegulatoryProvision(false); | ||
additionalInformations.setAgentOfPublicService(true); | ||
break; | ||
default: | ||
additionalInformations.setIpa(false); | ||
additionalInformations.setBelongRegulatedMarket(false); | ||
additionalInformations.setEstablishedByRegulatoryProvision(false); | ||
additionalInformations.setAgentOfPublicService(false); | ||
} | ||
|
||
return additionalInformations; | ||
} | ||
} |