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 c5d6e894b604bf298870bd2b417e8491eb3986cc..079a038ee7da87c5bd83ffc64a19361d9d3c9055 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 bd9aa33e3f3c697be38e6c91b81821d689f242a5..b2bc2fc0ecc4914180dfc36a129d0e11a90af839 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 548f6f55b7062c6f5a6887833394d2182d665c45..b70ef355262d34d93f857a7a59da3a3b0ad02cb2 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 f6283b9230c77de52f71b43888baf5a225574b93..31f59f63513a01b632fb84ec6a098cbdc815e832 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 0000000000000000000000000000000000000000..7e787bdf8c161a2f93720ddb758c92a64030afed --- /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() + ); + } +}