From fbc8c4e135c9245ee406e11e75ee0f5d01bb0fdf Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Sun, 27 Oct 2024 21:53:46 +0100 Subject: [PATCH] OZG-6721: OZG-6914: Add map from Stream to Map for OE-data from Repository. --- .../OrganisationsEinheitSettingsService.java | 18 ++-- .../OrganisationsEinheitWithSettings.java | 7 +- ...ationsEinheitSettingsRepositoryITCase.java | 2 +- ...ganisationsEinheitSettingsServiceTest.java | 87 +++++++++++++++---- ...sationsEinheitWithSettingsTestFactory.java | 22 +++++ 5 files changed, 111 insertions(+), 25 deletions(-) create mode 100644 src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettingsTestFactory.java diff --git a/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsService.java b/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsService.java index c5d6e894..079a038e 100644 --- a/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsService.java +++ b/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsService.java @@ -1,12 +1,12 @@ package de.ozgcloud.admin.common.organisationseinheit; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; +import java.util.Collections; import java.util.Map; +import java.util.stream.Collectors; import java.util.stream.Stream; - -import org.springframework.stereotype.Service; - -import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor @@ -19,6 +19,14 @@ public class OrganisationsEinheitSettingsService { } Map<String, OrganisationsEinheitSettings> getSettingsMap(Stream<OrganisationsEinheitWithSettings> settings) { - return Map.of(); + if(settings == null){ + return Collections.emptyMap(); + } + return settings.collect( + Collectors.toMap( + entry -> entry.organisationsEinheitId(), + entry -> entry.settings() + ) + ); } } diff --git a/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettings.java b/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettings.java index bd9aa33e..b2bc2fc0 100644 --- a/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettings.java +++ b/src/main/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettings.java @@ -2,8 +2,9 @@ package de.ozgcloud.admin.common.organisationseinheit; import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; -interface OrganisationsEinheitWithSettings { +record OrganisationsEinheitWithSettings( + String organisationsEinheitId, + OrganisationsEinheitSettings settings +) { - String getOrganisationsEinheitId(); - OrganisationsEinheitSettings getSettings(); } diff --git a/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsRepositoryITCase.java index 548f6f55..b70ef355 100644 --- a/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsRepositoryITCase.java +++ b/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsRepositoryITCase.java @@ -74,7 +74,7 @@ class OrganisationsEinheitSettingsRepositoryITCase { void shouldFind() { var found = repository.getSettings(); - assertThat(found).extracting(OrganisationsEinheitWithSettings::getOrganisationsEinheitId, item -> item.getSettings().getSignatur()) + assertThat(found).extracting(OrganisationsEinheitWithSettings::organisationsEinheitId, item -> item.settings().getSignatur()) .containsExactlyInAnyOrder( tuple(withSignatur1.getOrganisationsEinheitId(), withSignatur1.getSettings().getSignatur()), tuple(withSignatur2.getOrganisationsEinheitId(), withSignatur2.getSettings().getSignatur())); diff --git a/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsServiceTest.java b/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsServiceTest.java index f6283b92..31f59f63 100644 --- a/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitSettingsServiceTest.java @@ -1,12 +1,19 @@ package de.ozgcloud.admin.common.organisationseinheit; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.entry; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; import java.util.Map; import java.util.stream.Stream; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -14,12 +21,9 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.Spy; -import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; -import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; -import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; - class OrganisationsEinheitSettingsServiceTest { @Mock @@ -31,16 +35,16 @@ class OrganisationsEinheitSettingsServiceTest { private final OrganisationsEinheitWithSettings withSettings1 = mockWith(OrganisationsEinheitTestFactory.ID, OrganisationsEinheitSettingsTestFactory.create()); - @BeforeEach - void init() { - when(settingsRepository.getSettings()).thenReturn(Stream.of(withSettings1)); - } - @Nested class TestGetSettings { + @BeforeEach + void init2() { + when(settingsRepository.getSettings()).thenReturn(Stream.of(withSettings1)); + } + private final Map<String, OrganisationsEinheitSettings> settingsMap = Map.of( - OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, OrganisationsEinheitSettingsTestFactory.create() + OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, OrganisationsEinheitSettingsTestFactory.create() ); @Captor @@ -74,12 +78,63 @@ class OrganisationsEinheitSettingsServiceTest { @Nested class TestGetSettingsMap { + @Test + void shouldUseGetterWhenMapping() { + OrganisationsEinheitWithSettings settings = Mockito.mock(OrganisationsEinheitWithSettings.class); + doReturn(OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID).when(settings).organisationsEinheitId(); + doReturn(OrganisationsEinheitSettingsTestFactory.create()).when(settings).settings(); + + callService(Stream.of(settings)); + + verify(settings, times(1)).organisationsEinheitId(); + verify(settings, times(1)).settings(); + } + + @Test + void shouldConvertToMap() { + OrganisationsEinheitWithSettings oews = OrganisationsEinheitWithSettingsTestFactory.create(); + + var settingsMap = callService(Stream.of(oews)); + + assertThat(settingsMap).containsEntry(OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, oews.settings()); + } + + @Test + void shouldGetEmptyMapIfStreamEmpty() { + var settingsMap = callService(Stream.of()); + + assertThat(settingsMap).size().isEqualTo(0); + } + + @Test + void shouldGetEmptyMapIfNull() { + var settingsMap = callService(null); + + assertThat(settingsMap).size().isEqualTo(0); + } + + @Test + void shouldHaveAllEntries() { + OrganisationsEinheitWithSettings owes = OrganisationsEinheitWithSettingsTestFactory.create(); + OrganisationsEinheitWithSettings owes2 = OrganisationsEinheitWithSettingsTestFactory.createAnother(); + + var settingsMap = callService(Stream.of(owes, owes2)); + + assertThat(settingsMap).containsExactly( + entry(owes.organisationsEinheitId(), owes.settings()), + entry(owes2.organisationsEinheitId(), owes2.settings())); + } + + Map<String, OrganisationsEinheitSettings> callService(Stream<OrganisationsEinheitWithSettings> settings) { + return service.getSettingsMap(settings); + } + } private OrganisationsEinheitWithSettings mockWith(String organisationsEinheitId, OrganisationsEinheitSettings settings) { var withSettings = mock(OrganisationsEinheitWithSettings.class); - when(withSettings.getOrganisationsEinheitId()).thenReturn(organisationsEinheitId); - when(withSettings.getSettings()).thenReturn(settings); + when(withSettings.organisationsEinheitId()).thenReturn(organisationsEinheitId); + when(withSettings.settings()).thenReturn(settings); return withSettings; } } diff --git a/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettingsTestFactory.java b/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettingsTestFactory.java new file mode 100644 index 00000000..7e787bdf --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/common/organisationseinheit/OrganisationsEinheitWithSettingsTestFactory.java @@ -0,0 +1,22 @@ +package de.ozgcloud.admin.common.organisationseinheit; + +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory; +import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; +import java.util.UUID; + +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() + ); + } +} -- GitLab