diff --git a/src/main/java/de/ozgcloud/admin/setting/AlfaSettingDTO.java b/src/main/java/de/ozgcloud/admin/setting/AlfaSettingDTO.java index 0e6e6fed08fee3d9a87e10a57461901bfea7f531..34d60fcdfd9c44f08e70d3ce595b4d891523f01b 100644 --- a/src/main/java/de/ozgcloud/admin/setting/AlfaSettingDTO.java +++ b/src/main/java/de/ozgcloud/admin/setting/AlfaSettingDTO.java @@ -1,14 +1,23 @@ package de.ozgcloud.admin.setting; +import java.util.HashMap; +import java.util.Map; + import com.fasterxml.jackson.annotation.JsonProperty; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; import lombok.Builder; import lombok.Getter; @Builder @Getter class AlfaSettingDTO implements ApplicationSettingDTO { + @JsonProperty("ozgcloud.postfach.signatur") @Builder.Default private String signatur = ""; + + @JsonProperty("ozgcloud.postfach.organisationsEinheitSettings") + @Builder.Default + private Map<String, OrganisationsEinheitSettings> organisationsEinheitSettings = new HashMap<>(); } diff --git a/src/main/java/de/ozgcloud/admin/setting/OrganisationsEinheitSettingsRepository.java b/src/main/java/de/ozgcloud/admin/setting/OrganisationsEinheitSettingsRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..376d9898e05b720ee2bb2bb036cf6cf061dab91c --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/setting/OrganisationsEinheitSettingsRepository.java @@ -0,0 +1,16 @@ +package de.ozgcloud.admin.setting; + +import java.util.stream.Stream; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.stereotype.Repository; + +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheit; + +@Repository +interface OrganisationsEinheitSettingsRepository extends MongoRepository<OrganisationsEinheit, String> { + + @Query("{'settings': { $nin: [null,{}] } }") + Stream<OrganisationsEinheitWithSettings> getSettings(); +} diff --git a/src/main/java/de/ozgcloud/admin/setting/OrganisationsEinheitWithSettings.java b/src/main/java/de/ozgcloud/admin/setting/OrganisationsEinheitWithSettings.java new file mode 100644 index 0000000000000000000000000000000000000000..e4ad3c0e0bed0d25ea4294deeb8553bfe6e0d8ef --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/setting/OrganisationsEinheitWithSettings.java @@ -0,0 +1,9 @@ +package de.ozgcloud.admin.setting; + +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; + +record OrganisationsEinheitWithSettings( + String organisationsEinheitId, + OrganisationsEinheitSettings settings +) { +} diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingMapper.java b/src/main/java/de/ozgcloud/admin/setting/SettingMapper.java index f0f1ba6273a836a1a3fc94af1bd73a4fa3e2b1c0..8f3fd97f7b6c0515ca46655a40a525156ca197bb 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingMapper.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingMapper.java @@ -1,21 +1,13 @@ package de.ozgcloud.admin.setting; import org.mapstruct.Mapper; -import org.mapstruct.MappingTarget; import org.mapstruct.ReportingPolicy; import de.ozgcloud.admin.setting.postfach.Absender; import de.ozgcloud.admin.setting.postfach.AbsenderVorgangManager; -import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; @Mapper(unmappedTargetPolicy = ReportingPolicy.WARN) interface SettingMapper { - AlfaSettingDTO.AlfaSettingDTOBuilder mapAlfaPostfach(@MappingTarget AlfaSettingDTO.AlfaSettingDTOBuilder builder, - PostfachSettingBody postfachData); - - VorgangManagerSettingDTO.VorgangManagerSettingDTOBuilder mapVorgangManagerPostfach( - @MappingTarget VorgangManagerSettingDTO.VorgangManagerSettingDTOBuilder builder, PostfachSettingBody postfachData); - AbsenderVorgangManager mapAbsenderToAbsenderVorgangManager(Absender absender); } diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingService.java b/src/main/java/de/ozgcloud/admin/setting/SettingService.java index ca6a15e72d2e7032faa1def7d2dac03785a0d758..b8699568b6a2f6f84f000ec624730bce686ad1df 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingService.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingService.java @@ -1,7 +1,11 @@ package de.ozgcloud.admin.setting; +import java.util.Map; +import java.util.stream.Collectors; + import org.springframework.stereotype.Service; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; import lombok.RequiredArgsConstructor; @@ -10,22 +14,40 @@ import lombok.RequiredArgsConstructor; class SettingService { private static final String POSTFACH_SETTING_ITEM_NAME = "Postfach"; + private final OrganisationsEinheitSettingsRepository organisationsEinheitSettingsRepository; private final SettingRepository repository; private final SettingMapper mapper; public AlfaSettingDTO getAlfaSettingDTO() { var postfachData = getSettingWithPostfachFromDb(); - return mapper.mapAlfaPostfach(AlfaSettingDTO.builder(), postfachData).build(); + Map<String, OrganisationsEinheitSettings> settings = getOrganisationsEinheitSettings(); + + return AlfaSettingDTO.builder() + .signatur(postfachData.getSignatur()) + .organisationsEinheitSettings(settings) + .build(); } public VorgangManagerSettingDTO getVorgangManagerSettingDTO() { var postfachData = getSettingWithPostfachFromDb(); - return mapper.mapVorgangManagerPostfach(VorgangManagerSettingDTO.builder(), postfachData).build(); + Map<String, OrganisationsEinheitSettings> settings = getOrganisationsEinheitSettings(); + + return VorgangManagerSettingDTO.builder() + .absender(mapper.mapAbsenderToAbsenderVorgangManager(postfachData.getAbsender())) + .signatur(postfachData.getSignatur()) + .organisationsEinheitSettings(settings) + .build(); } PostfachSettingBody getSettingWithPostfachFromDb() { var postfach = repository.findOneByName(POSTFACH_SETTING_ITEM_NAME); return postfach.isPresent() ? (PostfachSettingBody) postfach.get().getSettingBody() : PostfachSettingBody.builder().build(); } + + Map<String, OrganisationsEinheitSettings> getOrganisationsEinheitSettings() { + return organisationsEinheitSettingsRepository.getSettings().collect(Collectors.toMap( + OrganisationsEinheitWithSettings::organisationsEinheitId, + OrganisationsEinheitWithSettings::settings)); + } } diff --git a/src/main/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTO.java b/src/main/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTO.java index 0a36b7696e1a46f76bd99817b23ccf20ed71603b..e4263ea47942808c59474e842003e1e824c1acf3 100644 --- a/src/main/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTO.java +++ b/src/main/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTO.java @@ -1,8 +1,12 @@ package de.ozgcloud.admin.setting; +import java.util.HashMap; +import java.util.Map; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonUnwrapped; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; import de.ozgcloud.admin.setting.postfach.AbsenderVorgangManager; import lombok.Builder; import lombok.Getter; @@ -17,4 +21,8 @@ class VorgangManagerSettingDTO implements ApplicationSettingDTO { @JsonProperty("ozgcloud.postfach.signatur") @Builder.Default private String signatur = ""; + + @JsonProperty("ozgcloud.postfach.organisationsEinheitSettings") + @Builder.Default + private Map<String, OrganisationsEinheitSettings> organisationsEinheitSettings = new HashMap<>(); } diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepositoryITCase.java index dcfeebde1d6aa5bfb83944ec11c110f72dd833a8..d72ba698910c33fbdfff6ac74f2fec5dbefc0fef 100644 --- a/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepositoryITCase.java +++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepositoryITCase.java @@ -1,6 +1,7 @@ package de.ozgcloud.admin.organisationseinheit; import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.groups.Tuple.tuple; import java.time.Instant; import java.util.UUID; @@ -286,5 +287,4 @@ class OrganisationsEinheitRepositoryITCase { } } - } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/admin/setting/AlfaSettingDTOTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/AlfaSettingDTOTestFactory.java index b00c52b64f139c94e90a101aba3bdb8c66df6313..c3f126d0984418995a5f29e60d0d5604e47eab4d 100644 --- a/src/test/java/de/ozgcloud/admin/setting/AlfaSettingDTOTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/AlfaSettingDTOTestFactory.java @@ -1,13 +1,25 @@ package de.ozgcloud.admin.setting; +import java.util.Map; + +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; public class AlfaSettingDTOTestFactory { + public static AlfaSettingDTO create() { return createBuilder().build(); } + public static Map<String, OrganisationsEinheitSettings> organisationsEinheitSettings = Map.of( + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, + OrganisationsEinheitSettingsTestFactory.create()); + public static AlfaSettingDTO.AlfaSettingDTOBuilder createBuilder() { - return AlfaSettingDTO.builder().signatur(PostfachSettingBodyTestFactory.SIGNATUR); + return AlfaSettingDTO.builder() + .signatur(PostfachSettingBodyTestFactory.SIGNATUR) + .organisationsEinheitSettings(organisationsEinheitSettings); } } diff --git a/src/test/java/de/ozgcloud/admin/setting/OrganisationsEinheitSettingsRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/setting/OrganisationsEinheitSettingsRepositoryITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..880b06ecd9c2d6f1bb2ba84fa8b2e2fefb493360 --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/setting/OrganisationsEinheitSettingsRepositoryITCase.java @@ -0,0 +1,91 @@ +package de.ozgcloud.admin.setting; + +import static org.assertj.core.api.Assertions.*; + +import java.util.UUID; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; +import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; + +import com.thedeanda.lorem.LoremIpsum; + +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheit; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; +import de.ozgcloud.common.test.DbInitializer; + +@DataMongoTest +@ContextConfiguration(initializers = { DbInitializer.class }, classes = { OrganisationsEinheitSettingsRepository.class, MongoOperations.class }) +@ActiveProfiles({ "itcase", "with_db" }) +@EnableAutoConfiguration +class OrganisationsEinheitSettingsRepositoryITCase { + + @Autowired + private OrganisationsEinheitSettingsRepository repository; + @Autowired + private MongoOperations operations; + + @BeforeEach + void clearDatabase() { + operations.dropCollection(OrganisationsEinheit.class); + } + + @Nested + class TestGetSettings { + + private final OrganisationsEinheit withSignatur1 = OrganisationsEinheitTestFactory.createBuilder() + .id(UUID.randomUUID().toString()) + .organisationsEinheitId(UUID.randomUUID().toString()) + .settings(withRandomSignatur()) + .build(); + private final OrganisationsEinheit withSignatur2 = OrganisationsEinheitTestFactory.createBuilder() + .id(UUID.randomUUID().toString()) + .organisationsEinheitId(UUID.randomUUID().toString()) + .settings(withRandomSignatur()) + .build(); + private final OrganisationsEinheit withNullSettings = OrganisationsEinheitTestFactory.createBuilder() + .id(UUID.randomUUID().toString()) + .organisationsEinheitId(UUID.randomUUID().toString()) + .settings(null) + .build(); + private final OrganisationsEinheit withEmptySettings = OrganisationsEinheitTestFactory.createBuilder() + .id(UUID.randomUUID().toString()) + .organisationsEinheitId(UUID.randomUUID().toString()) + .settings(OrganisationsEinheitSettings.builder().build()) + .build(); + + @BeforeEach + void setUp() { + operations.save(withSignatur1); + operations.save(withSignatur2); + operations.save(withNullSettings); + operations.save(withEmptySettings); + } + + @Test + void shouldFind() { + var found = repository.getSettings(); + + assertThat(found).extracting(OrganisationsEinheitWithSettings::organisationsEinheitId, item -> item.settings().getSignatur()) + .containsExactlyInAnyOrder( + tuple(withSignatur1.getOrganisationsEinheitId(), withSignatur1.getSettings().getSignatur()), + tuple(withSignatur2.getOrganisationsEinheitId(), withSignatur2.getSettings().getSignatur())); + } + + private static OrganisationsEinheitSettings withRandomSignatur() { + return withSignatur(LoremIpsum.getInstance().getWords(5)); + } + + private static OrganisationsEinheitSettings withSignatur(String signatur) { + return OrganisationsEinheitSettingsTestFactory.createBuilder().signatur(signatur).build(); + } + } +} diff --git a/src/test/java/de/ozgcloud/admin/setting/OrganisationsEinheitWithSettingsTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/OrganisationsEinheitWithSettingsTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..49a02b8ecc382b800df595c2669adea8809f287b --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/setting/OrganisationsEinheitWithSettingsTestFactory.java @@ -0,0 +1,23 @@ +package de.ozgcloud.admin.setting; + +import java.util.UUID; + +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; + +public class OrganisationsEinheitWithSettingsTestFactory { + + public static OrganisationsEinheitWithSettings create() { + return new OrganisationsEinheitWithSettings( + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, + OrganisationsEinheitSettingsTestFactory.create() + ); + } + + public static OrganisationsEinheitWithSettings createAnother() { + return new OrganisationsEinheitWithSettings( + UUID.randomUUID().toString(), + OrganisationsEinheitSettingsTestFactory.create() + ); + } +} diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java index 5888ac1392c4e09f3b923e6974f442c474e0dddf..cd92c83fef3f81a6d0dfd6a42b76c156d61e8dda 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java @@ -1,4 +1,3 @@ - package de.ozgcloud.admin.setting; import static org.assertj.core.api.Assertions.*; @@ -10,9 +9,12 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheit; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; import de.ozgcloud.common.test.DataITCase; import lombok.SneakyThrows; @@ -25,7 +27,7 @@ class SettingEnvironmentITCase { @Autowired private MockMvc mockMvc; @Autowired - private SettingRepository settingRepository; + private MongoOperations mongoOperations; private Setting settingWithPostfach = SettingTestFactory.createBuilder() .name("Postfach") @@ -42,11 +44,13 @@ class SettingEnvironmentITCase { @Nested class TestFindOne { + @BeforeEach void fillDb() { - settingRepository.deleteAll(); - settingRepository.save(settingWithPostfach); - + mongoOperations.dropCollection(Setting.class); + mongoOperations.dropCollection(OrganisationsEinheit.class); + mongoOperations.save(settingWithPostfach); + mongoOperations.save(OrganisationsEinheitTestFactory.create()); } @Test diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingMapperTest.java b/src/test/java/de/ozgcloud/admin/setting/SettingMapperTest.java deleted file mode 100644 index d19e81a2dc480db8bfc2e8d6e1daefc7e001392c..0000000000000000000000000000000000000000 --- a/src/test/java/de/ozgcloud/admin/setting/SettingMapperTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package de.ozgcloud.admin.setting; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.Spy; - -import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; -import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; - -class SettingMapperTest { - private final PostfachSettingBody postfach = PostfachSettingBodyTestFactory.create(); - private final AlfaSettingDTO alfaSettingDTO = AlfaSettingDTOTestFactory.create(); - private final VorgangManagerSettingDTO vorgangManagerSettingDTO = VorgangManagerSettingDTOTestFactory.create(); - - @Spy - private final SettingMapper mapper = Mappers.getMapper(SettingMapper.class); - - @Nested - class TestMapPostfachToAlfaSetting { - @Test - void shouldReturnFlattenedAlfaMap() { - var resultAlfaSetting = mapper.mapAlfaPostfach(AlfaSettingDTO.builder(), postfach).build(); - - assertThat(resultAlfaSetting).usingRecursiveComparison().isEqualTo(alfaSettingDTO); - } - } - - @Nested - class TestMapPostfachToVorgangManagerSetting { - @Test - void shouldReturnFlattenedVorgangManagerMap() { - var resultVorgangmanagerSetting = mapper.mapVorgangManagerPostfach(VorgangManagerSettingDTO.builder(), postfach).build(); - - assertThat(resultVorgangmanagerSetting).usingRecursiveComparison().isEqualTo(vorgangManagerSettingDTO); - } - } - -} diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingServiceTest.java b/src/test/java/de/ozgcloud/admin/setting/SettingServiceTest.java index 00af130bc3b191d9c1ff8b02af5812c628922662..f463359e1002e3b3074f82f8e08a94fdb692e948 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingServiceTest.java @@ -1,10 +1,11 @@ package de.ozgcloud.admin.setting; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.util.Map; import java.util.Optional; +import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -15,6 +16,10 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; +import de.ozgcloud.admin.setting.postfach.AbsenderVorgangManagerTestFactory; import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; @@ -26,6 +31,8 @@ class SettingServiceTest { @Mock private SettingRepository repository; + @Mock + private OrganisationsEinheitSettingsRepository organisationsEinheitSettingsRepository; @Mock private SettingMapper mapper; @@ -37,39 +44,37 @@ class SettingServiceTest { @Nested class TestGetAlfaSettingDTO { + @Captor private ArgumentCaptor<AlfaSettingDTO.AlfaSettingDTOBuilder> alfaBuilderCaptor; private final AlfaSettingDTO alfaSetting = AlfaSettingDTOTestFactory.create(); + private final Map<String, OrganisationsEinheitSettings> organisationsEinheitSettings = Map.of( + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, + OrganisationsEinheitSettingsTestFactory.create()); @BeforeEach - void mockGetSettingWithPostfachFromDb() { + void init() { + doReturn(organisationsEinheitSettings).when(service).getOrganisationsEinheitSettings(); doReturn(postfach).when(service).getSettingWithPostfachFromDb(); } @Test void shouldCallGetSettingWithPostfachFromDb() { - when(mapper.mapAlfaPostfach(any(), any())).thenReturn(AlfaSettingDTOTestFactory.createBuilder()); - service.getAlfaSettingDTO(); verify(service).getSettingWithPostfachFromDb(); } @Test - void shouldCallMapperWithEmptyBuilderAndPostfach() { - when(mapper.mapAlfaPostfach(any(), any())).thenReturn(AlfaSettingDTOTestFactory.createBuilder()); - + void shouldGetOrganisationsEinheitSettings() { service.getAlfaSettingDTO(); - verify(mapper).mapAlfaPostfach(alfaBuilderCaptor.capture(), eq(postfach)); - assertThat(alfaBuilderCaptor.getValue()).usingRecursiveComparison().isEqualTo(AlfaSettingDTO.builder()); + verify(service).getOrganisationsEinheitSettings(); } @Test void shouldReturnBuiltAlfaSettingDTO() { - when(mapper.mapAlfaPostfach(any(), any())).thenReturn(AlfaSettingDTOTestFactory.createBuilder()); - var resultSettingDTO = service.getAlfaSettingDTO(); assertThat(resultSettingDTO).usingRecursiveComparison().isEqualTo(alfaSetting); @@ -78,19 +83,20 @@ class SettingServiceTest { @Nested class TestGetVorgangManagerSettingDTO { + @Captor private ArgumentCaptor<VorgangManagerSettingDTO.VorgangManagerSettingDTOBuilder> vorgangManagerBuilderCaptor; private final VorgangManagerSettingDTO vorgangManagerSetting = VorgangManagerSettingDTOTestFactory.create(); + private final Map<String, OrganisationsEinheitSettings> organisationsEinheitSettings = Map.of( + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, + OrganisationsEinheitSettingsTestFactory.create()); @BeforeEach - void mockGetSettingWithPostfachFromDb() { + void init() { + doReturn(organisationsEinheitSettings).when(service).getOrganisationsEinheitSettings(); doReturn(postfach).when(service).getSettingWithPostfachFromDb(); - } - - @BeforeEach - void mockMapper() { - when(mapper.mapVorgangManagerPostfach(any(), any())).thenReturn(VorgangManagerSettingDTOTestFactory.createBuilder()); + when(mapper.mapAbsenderToAbsenderVorgangManager(postfach.getAbsender())).thenReturn(AbsenderVorgangManagerTestFactory.create()); } @Test @@ -101,11 +107,10 @@ class SettingServiceTest { } @Test - void shouldCallMapperWithEmptyBuilderAndPostfach() { + void shouldGetOrganisationsEinheitSettings() { service.getVorgangManagerSettingDTO(); - verify(mapper).mapVorgangManagerPostfach(vorgangManagerBuilderCaptor.capture(), eq(postfach)); - assertThat(vorgangManagerBuilderCaptor.getValue()).usingRecursiveComparison().isEqualTo(VorgangManagerSettingDTO.builder()); + verify(service).getOrganisationsEinheitSettings(); } @Test @@ -147,4 +152,28 @@ class SettingServiceTest { } } + @Nested + class TestGetOrganisationsEinheitSettings { + + private final OrganisationsEinheitWithSettings organisationsEinheitWithSettings = OrganisationsEinheitWithSettingsTestFactory.create(); + + @Test + void shouldReturnOrganisationsEinheitSettingsByOrganisationsEinheitId() { + when(organisationsEinheitSettingsRepository.getSettings()).thenReturn(Stream.of(organisationsEinheitWithSettings)); + + var got = service.getOrganisationsEinheitSettings(); + + assertThat(got).contains(entry(organisationsEinheitWithSettings.organisationsEinheitId(), organisationsEinheitWithSettings.settings())); + } + + @Test + void shouldReturnEmpty() { + when(organisationsEinheitSettingsRepository.getSettings()).thenReturn(Stream.of()); + + var got = service.getOrganisationsEinheitSettings(); + + assertThat(got).isEmpty(); + + } + } } diff --git a/src/test/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTOTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTOTestFactory.java index 2e4d90d105fe79a27e69499f6314e396aeb6bbd7..be53a581dce06f660aee3bd7ebcc45de579dbd99 100644 --- a/src/test/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTOTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/VorgangManagerSettingDTOTestFactory.java @@ -1,5 +1,7 @@ package de.ozgcloud.admin.setting; +import static de.ozgcloud.admin.setting.AlfaSettingDTOTestFactory.*; + import de.ozgcloud.admin.setting.postfach.AbsenderVorgangManager; import de.ozgcloud.admin.setting.postfach.AbsenderVorgangManagerTestFactory; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; @@ -15,6 +17,7 @@ public class VorgangManagerSettingDTOTestFactory { public static VorgangManagerSettingDTO.VorgangManagerSettingDTOBuilder createBuilder() { return VorgangManagerSettingDTO.builder() .absender(ABSENDER) - .signatur(SIGNATUR); + .signatur(SIGNATUR) + .organisationsEinheitSettings(organisationsEinheitSettings); } } diff --git a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java index a9aa38185568cb3ad4b97718b78f9c1e23941c6f..703aff603700c5e68b03d0a1a1013eb0da59b383 100644 --- a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java @@ -1,10 +1,13 @@ package de.ozgcloud.admin.setting; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; import de.ozgcloud.common.test.TestUtils; public class YamlTestFactory { + public static final PostfachSettingBody POSTFACH = PostfachSettingBodyTestFactory.create(); public static String createVorgangManagerYaml() { @@ -14,10 +17,15 @@ public class YamlTestFactory { POSTFACH.getAbsender().getDienst(), POSTFACH.getAbsender().getMandant(), POSTFACH.getAbsender().getGemeindeschluessel(), - POSTFACH.getSignatur()); + POSTFACH.getSignatur(), + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, + OrganisationsEinheitSettingsTestFactory.SIGNATUR); } public static String createAlfaYaml() { - return TestUtils.loadTextFile("yamlTemplates/settings/alfa.yaml.tmpl", POSTFACH.getSignatur()); + return TestUtils.loadTextFile("yamlTemplates/settings/alfa.yaml.tmpl", + POSTFACH.getSignatur(), + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, + OrganisationsEinheitSettingsTestFactory.SIGNATUR); } } diff --git a/src/test/resources/yamlTemplates/settings/alfa.yaml.tmpl b/src/test/resources/yamlTemplates/settings/alfa.yaml.tmpl index 3fa8a717bd38f3b276e782dfb5d2507a28f1cca5..47d2f8aa84293e165b94befb770d054ff4e61745 100644 --- a/src/test/resources/yamlTemplates/settings/alfa.yaml.tmpl +++ b/src/test/resources/yamlTemplates/settings/alfa.yaml.tmpl @@ -1,3 +1,6 @@ ozgcloud: postfach: signatur: "%s" + organisationsEinheitSettings: + %s: + signatur: %s diff --git a/src/test/resources/yamlTemplates/settings/vorgangManager.yaml.tmpl b/src/test/resources/yamlTemplates/settings/vorgangManager.yaml.tmpl index 21a2dea1e6a71ec21c51a4ef28f0b0b3760d7eb6..35db0e0213abaa43bd353fd89e0ca754d740cc3e 100644 --- a/src/test/resources/yamlTemplates/settings/vorgangManager.yaml.tmpl +++ b/src/test/resources/yamlTemplates/settings/vorgangManager.yaml.tmpl @@ -7,3 +7,6 @@ ozgcloud: mandant: %s gemeinde-schluessel: '%s' signatur: "%s" + organisationsEinheitSettings: + %s: + signatur: %s