From 57cc1c3fce74e0edda5a2695479dbe06c0293307 Mon Sep 17 00:00:00 2001 From: flaminiaScarciofolo <113031535+flaminiaScarciofolo@users.noreply.github.com> Date: Wed, 18 Sep 2024 08:31:24 +0200 Subject: [PATCH] [SELC-5476] Feat: Added user mapping for aggregate users (#489) --- .../entity/AggregateInstitution.java | 5 + .../onboarding/mapper/OnboardingMapper.java | 13 +++ .../onboarding/OnboardingMapperTest.java | 93 +++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingMapperTest.java diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/AggregateInstitution.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/AggregateInstitution.java index a4875bc2f..658cdb9d1 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/AggregateInstitution.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/AggregateInstitution.java @@ -18,6 +18,7 @@ public class AggregateInstitution { private String zipCode; private String originId; private Origin origin; + private List users; public String getTaxCode() { return taxCode; @@ -27,6 +28,10 @@ public void setTaxCode(String taxCode) { this.taxCode = taxCode; } + public List getUsers() {return users;} + + public void setUsers(List users) {this.users = users;} + public String getSubunitCode() { return subunitCode; } diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java index 078e32cac..b07508a40 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java @@ -4,10 +4,14 @@ import it.pagopa.selfcare.onboarding.entity.AggregateInstitution; import it.pagopa.selfcare.onboarding.entity.Institution; import it.pagopa.selfcare.onboarding.entity.Onboarding; +import it.pagopa.selfcare.onboarding.entity.User; + +import org.apache.commons.collections4.CollectionUtils; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; +import java.util.List; import java.util.Objects; @Mapper(componentModel = "cdi") @@ -20,6 +24,7 @@ public interface OnboardingMapper { Onboarding mapToOnboarding(OnboardingAggregateOrchestratorInput input); @Mapping(target = "aggregate", expression = "java(mapFromAggregateInstitution(aggregateInstitution))") + @Mapping(target = "users", expression = "java(mapAggregateUsers(onboarding, aggregateInstitution))") OnboardingAggregateOrchestratorInput mapToOnboardingAggregateOrchestratorInput(Onboarding onboarding, AggregateInstitution aggregateInstitution); /** @@ -36,5 +41,13 @@ default Institution mapInstitution(Institution aggregate, Institution institutio return aggregate; } + @Named("mapAggregateUsers") + default List mapAggregateUsers(Onboarding onboarding, AggregateInstitution aggregateInstitution) { + if (Objects.nonNull(aggregateInstitution) && !CollectionUtils.isEmpty(aggregateInstitution.getUsers())) { + return aggregateInstitution.getUsers(); + } + return onboarding.getUsers(); + } + Institution mapFromAggregateInstitution(AggregateInstitution aggregateInstitution); } diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingMapperTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingMapperTest.java new file mode 100644 index 000000000..9fc7e386b --- /dev/null +++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingMapperTest.java @@ -0,0 +1,93 @@ +package it.pagopa.selfcare.onboarding; + +import io.quarkus.test.junit.QuarkusTest; +import it.pagopa.selfcare.onboarding.common.PartyRole; +import it.pagopa.selfcare.onboarding.dto.OnboardingAggregateOrchestratorInput; +import it.pagopa.selfcare.onboarding.entity.AggregateInstitution; +import it.pagopa.selfcare.onboarding.entity.Onboarding; +import it.pagopa.selfcare.onboarding.entity.User; +import it.pagopa.selfcare.onboarding.mapper.OnboardingMapperImpl; +import jakarta.inject.Inject; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Collections; +import java.util.List; + +@QuarkusTest +class OnboardingMapperTest { + + @Inject + private OnboardingMapperImpl onboardingMapper; + + @Test + void mapToOnboardingAggregateOrchestratorInputTestWithAggregateUsers(){ + Onboarding onboarding = new Onboarding(); + onboarding.setId("example"); + onboarding.setProductId("productId"); + User user = new User(); + user.setId("aggregatorUser"); + user.setRole(PartyRole.MANAGER); + user.setProductRole("aggregatorProductRole"); + onboarding.setUsers(List.of(user)); + + User user2 = new User(); + user2.setId("aggregateUser"); + user2.setRole(PartyRole.MANAGER); + user2.setProductRole("aggregateProductRole"); + AggregateInstitution aggregateInstitution = new AggregateInstitution(); + aggregateInstitution.setUsers(List.of(user2)); + onboarding.setAggregates(List.of(aggregateInstitution)); + + OnboardingAggregateOrchestratorInput response = onboardingMapper.mapToOnboardingAggregateOrchestratorInput(onboarding, aggregateInstitution); + Assertions.assertEquals(1, response.getUsers().size()); + Assertions.assertEquals("aggregateUser", response.getUsers().get(0).getId()); + Assertions.assertEquals(PartyRole.MANAGER, response.getUsers().get(0).getRole()); + Assertions.assertEquals("aggregateProductRole", response.getUsers().get(0).getProductRole()); + + } + + @Test + void mapToOnboardingAggregateOrchestratorInputTestWithoutAggregatesUser(){ + Onboarding onboarding = new Onboarding(); + onboarding.setId("example"); + onboarding.setProductId("productId"); + User user = new User(); + user.setId("aggregatorUser"); + user.setRole(PartyRole.MANAGER); + user.setProductRole("aggregatorProductRole"); + onboarding.setUsers(List.of(user)); + + AggregateInstitution aggregateInstitution = new AggregateInstitution(); + aggregateInstitution.setUsers(null); + onboarding.setAggregates(List.of(aggregateInstitution)); + + OnboardingAggregateOrchestratorInput response = onboardingMapper.mapToOnboardingAggregateOrchestratorInput(onboarding, aggregateInstitution); + Assertions.assertEquals(1, response.getUsers().size()); + Assertions.assertEquals("aggregatorUser", response.getUsers().get(0).getId()); + Assertions.assertEquals(PartyRole.MANAGER, response.getUsers().get(0).getRole()); + Assertions.assertEquals("aggregatorProductRole", response.getUsers().get(0).getProductRole()); + } + + @Test + void mapToOnboardingAggregateOrchestratorInputTestWithAggregatesUserEmptyList(){ + Onboarding onboarding = new Onboarding(); + onboarding.setId("example"); + onboarding.setProductId("productId"); + User user = new User(); + user.setId("aggregatorUser"); + user.setRole(PartyRole.MANAGER); + user.setProductRole("aggregatorProductRole"); + onboarding.setUsers(List.of(user)); + + AggregateInstitution aggregateInstitution = new AggregateInstitution(); + aggregateInstitution.setUsers(Collections.emptyList()); + onboarding.setAggregates(List.of(aggregateInstitution)); + + OnboardingAggregateOrchestratorInput response = onboardingMapper.mapToOnboardingAggregateOrchestratorInput(onboarding, aggregateInstitution); + Assertions.assertEquals(1, response.getUsers().size()); + Assertions.assertEquals("aggregatorUser", response.getUsers().get(0).getId()); + Assertions.assertEquals(PartyRole.MANAGER, response.getUsers().get(0).getRole()); + Assertions.assertEquals("aggregatorProductRole", response.getUsers().get(0).getProductRole()); + } +}