diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java index 91d203b2fd562200dc9f9df7990e63d2dadaac99..22abba8cb58224ab8a14a838630ed6698c096137 100644 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java @@ -41,11 +41,13 @@ public class VorgangService { private final VorgangRemoteService remoteService; public String createVorgang(FormData formData) { - var preparedFormData = preserveConsistency(formData); - var organisationseinheitIds = getOrganisationsEinheitIds(formData); - return organisationseinheitIds.isEmpty() + return createVorgangForOrganisationsEinheitIds(getOrganisationsEinheitIds(formData), preserveConsistency(formData)); + } + + String createVorgangForOrganisationsEinheitIds(List<String> organisationsEinheitIds, FormData preparedFormData) { + return organisationsEinheitIds.isEmpty() ? createVorgangOnMissingZustaendigeStelle(preparedFormData) - : createMultipleVorgangs(preparedFormData, organisationseinheitIds).getFirst(); + : createMultipleVorgangs(preparedFormData, organisationsEinheitIds).getFirst(); } String createVorgangOnMissingZustaendigeStelle(FormData formData) { diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java index d8960fcbd327f62e9f1233ea8e1727bc1975e17f..a78d71e8cdf178413195e438ec4d4820d62e1707 100644 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java @@ -53,87 +53,88 @@ class VorgangServiceTest { @Spy @InjectMocks private VorgangService service; - @Mock private VorgangRemoteService remoteService; @DisplayName("Create vorgang") @Nested - class TestCreateVorgangs { - private FormData formData; - private FormData preservedFormData; - private static final String ORGANISATIONSEINHEIT_ID_2 = "08150816"; + class TestCreateVorgang { + + private final FormData formData = FormDataTestFactory.create(); + private final FormData preservedFormData = FormDataTestFactory.create(); + private final List<String> organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); @BeforeEach - void setup() { - formData = FormDataTestFactory.create(); - preservedFormData = FormDataTestFactory.createBuilder() - .zustaendigeStelle(ZustaendigeStelleTestFactory.createBuilder() - .organisationseinheitenId(ORGANISATIONSEINHEIT_ID_2) - .build()) - .build(); - doReturn(preservedFormData).when(service).preserveConsistency(any()); + void mockEingangMapper() { + doReturn(preservedFormData).when(service).preserveConsistency(formData); + doReturn(organisationseinheitIds).when(service).getOrganisationsEinheitIds(any()); + doReturn(VORGANG_ID).when(service).createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); } - @DisplayName("should call preserve consistency") @Test - void shouldCallPreserveConsistency() { - mockOrganisationseinheitId(); + void shouldPreserverConsistency() { + callCreateVorgang(); + + verify(service).preserveConsistency(formData); + } - createVorgang(); + @DisplayName("should call create vorgang for organisationseinheitIds") + @Test + void shouldCallCreateVorgangForOrganisationseinheitIds() { + callCreateVorgang(); - verify(service).preserveConsistency(eq(formData)); + verify(service).createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); } @DisplayName("should call get organisationseinheit ids") @Test void shouldCallGetOrganisationseinheitIds() { - mockOrganisationseinheitId(); + callCreateVorgang(); + + verify(service).getOrganisationsEinheitIds(formData); + } - createVorgang(); + @DisplayName("should return vorgang id") + @Test + void shouldReturn() { + var vorgangId = callCreateVorgang(); - verify(service).getOrganisationsEinheitIds(eq(formData)); + assertThat(vorgangId).isEqualTo(VORGANG_ID); } + private String callCreateVorgang() { + return service.createVorgang(formData); + } + } + + @DisplayName("create vorgang for organisationsEinheitIds") + @Nested + class TestCreateVorgangForOrganisationsEinheitIds { + private final FormData preservedFormData = FormDataTestFactory.create(); + private final List<String> organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); + @DisplayName("should call create multiple vorgangs") @Test void shouldCallCreateMultipleVorgangs() { - var organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONSEINHEIT_ID_2); - mockOrganisationseinheitIds(organisationseinheitIds); + service.createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); - createVorgang(); - - verify(service).createMultipleVorgangs(eq(preservedFormData), eq(organisationseinheitIds)); + verify(service).createMultipleVorgangs(preservedFormData, organisationseinheitIds); } @DisplayName("should return first vorgang id with multiple organisationseinheits") @Test void shouldReturnFirstVorgangIdWithMultipleOrganisationseinheits() { - var organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONSEINHEIT_ID_2); - mockOrganisationseinheitIds(organisationseinheitIds); - - var vorgangIds = createVorgang(); - - assertThat(vorgangIds).isEqualTo(VORGANG_ID); - } - - private void mockOrganisationseinheitId() { - doReturn(List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).when(service).getOrganisationsEinheitIds(any()); doReturn(List.of(VORGANG_ID)).when(service).createMultipleVorgangs(any(), any()); - } - private void mockOrganisationseinheitIds(List<String> organisationseinheitIds) { - doReturn(organisationseinheitIds).when(service) - .getOrganisationsEinheitIds(any()); - doReturn(List.of(VORGANG_ID, "otherId")).when(service).createMultipleVorgangs(any(), any()); + var vorgangId = service.createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); + + assertThat(vorgangId).isEqualTo(VORGANG_ID); } @DisplayName("should call create vorgang on missing zustaendige stelle if organisationseinheit is missing") @Test void shouldCallCreateVorgangOnMissingZustaendigeStelleIfOrganisationseinheitIsMissing() { - mockMissingOrganisationseinheitIds(); - - createVorgang(); + service.createVorgangForOrganisationsEinheitIds(emptyList(), preservedFormData); verify(service).createVorgangOnMissingZustaendigeStelle(eq(preservedFormData)); } @@ -141,21 +142,13 @@ class VorgangServiceTest { @DisplayName("should return single vorgang id if organisationseinheit is missing") @Test void shouldReturnSingleVorgangIdIfOrganisationseinheitIsMissing() { - mockMissingOrganisationseinheitIds(); + doReturn(VORGANG_ID).when(service).createVorgangOnMissingZustaendigeStelle(any()); - var firstVorgangId = createVorgang(); + var firstVorgangId = service.createVorgangForOrganisationsEinheitIds(emptyList(), preservedFormData); assertThat(firstVorgangId).isEqualTo(VORGANG_ID); } - private void mockMissingOrganisationseinheitIds() { - doReturn(emptyList()).when(service).getOrganisationsEinheitIds(any()); - doReturn(VORGANG_ID).when(service).createVorgangOnMissingZustaendigeStelle(any()); - } - - private String createVorgang() { - return service.createVorgang(formData); - } } @DisplayName("create vorgang on missing zustaendige stelle") @@ -189,63 +182,43 @@ class VorgangServiceTest { @DisplayName("create multiple vorgangs") @Nested class TestCreateMultipleVorgangs { - private static final String ORGANISATIONSEINHEIT_ID_2 = "08150816"; - private static final String VORGANG_ID_2 = "vorgangId2"; - private static final List<String> ORGANISATIONSEINHEIT_IDS = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, - ORGANISATIONSEINHEIT_ID_2); @Mock private FormData formData; @BeforeEach void mock() { - when(remoteService.createVorgang(any(), any())) - .thenReturn(VORGANG_ID) - .thenReturn(VORGANG_ID_2); + when(remoteService.createVorgang(any(), any())).thenReturn(VORGANG_ID); } @DisplayName("should call create vorgang twice") @Test void shouldCallCreateVorgangTwice() { - service.createMultipleVorgangs(formData, ORGANISATIONSEINHEIT_IDS); + service.createMultipleVorgangs(formData, List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); verify(remoteService).createVorgang(formData, Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); - verify(remoteService).createVorgang(formData, Optional.of(ORGANISATIONSEINHEIT_ID_2)); } @DisplayName("should return") @Test void shouldReturn() { - var vorgangIds = service.createMultipleVorgangs(formData, ORGANISATIONSEINHEIT_IDS); + var vorgangIds = service.createMultipleVorgangs(formData, List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); - assertThat(vorgangIds).containsExactlyInAnyOrder(VORGANG_ID, VORGANG_ID_2); + assertThat(vorgangIds).containsExactly(VORGANG_ID); } } @DisplayName("get organisationseinheit ids") @Nested class TestGetOrganisationseinheitIds { - private static final String ORGANISATIONSEINHEIT_ID_2 = "08150816"; - private FormData preservedFormData; - - @BeforeEach - void mock() { - preservedFormData = FormDataTestFactory.createBuilder() - .zustaendigeStelle(ZustaendigeStelleTestFactory.createBuilder() - .organisationseinheitenId(ORGANISATIONSEINHEIT_ID_2) - .build()) - .build(); - } + private final FormData preservedFormData = FormDataTestFactory.create(); @DisplayName("should return") @Test void shouldReturn() { var organisationseinheitIds = service.getOrganisationsEinheitIds(preservedFormData); - assertThat(organisationseinheitIds).containsExactly( - ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, - ORGANISATIONSEINHEIT_ID_2 - ); + assertThat(organisationseinheitIds).containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); } }