From 43cd2d5e98b1d1d412cc02a7da807434819930d3 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:32:48 +0200 Subject: [PATCH 1/7] =?UTF-8?q?Differenzierter=20klarer=20Name=20f=C3=BCr?= =?UTF-8?q?=20Wahlen=20aus=20DummyClient?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basisdatenservice/clients/DummyClientImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/clients/DummyClientImpl.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/clients/DummyClientImpl.java index c8bf141a6..417d8d2ab 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/clients/DummyClientImpl.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/clients/DummyClientImpl.java @@ -69,9 +69,9 @@ public List getWahltage(LocalDate tag) { @Override public List getWahlen(final WahltagWithNummer wahltagWithNummer) throws WlsException { return List.of( - new WahlModel("wahl1", "0", 1L, 1L, wahltagWithNummer.wahltag(), BTW, new Farbe(0, 1, 2), "1"), - new WahlModel("wahl2", "1", 2L, 1L, wahltagWithNummer.wahltag(), EUW, new Farbe(3, 4, 5), "1"), - new WahlModel("wahl3", "2", 3L, 1L, wahltagWithNummer.wahltag(), LTW, new Farbe(6, 7, 8), "1")); + new WahlModel("wahl1", "remoteWahl 0", 1L, 1L, wahltagWithNummer.wahltag(), BTW, new Farbe(0, 1, 2), "1"), + new WahlModel("wahl2", "remoteWahl 1", 2L, 1L, wahltagWithNummer.wahltag(), EUW, new Farbe(3, 4, 5), "1"), + new WahlModel("wahl3", "remoteWahl 2", 3L, 1L, wahltagWithNummer.wahltag(), LTW, new Farbe(6, 7, 8), "1")); } @Override From ccd79b2d5d05eb282f95d7a2a927d25743a48a20 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:16:34 +0200 Subject: [PATCH 2/7] =?UTF-8?q?Method=20Post=20Wahlen=20kommentiert=20um?= =?UTF-8?q?=20k=C3=BCnftige=20irref=C3=BChrende=20Schl=C3=BCsse=20zu=20ver?= =?UTF-8?q?meiden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wls-basisdaten-service/src/test/resources/wahlen.http | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/wls-basisdaten-service/src/test/resources/wahlen.http b/wls-basisdaten-service/src/test/resources/wahlen.http index 8076223e2..10101fe7b 100644 --- a/wls-basisdaten-service/src/test/resources/wahlen.http +++ b/wls-basisdaten-service/src/test/resources/wahlen.http @@ -18,6 +18,12 @@ GET {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/userinfo Authorization: {{ token_type }} {{ auth_token }} ### POST Wahlen +## If you want to POST Wahlen to override existing Wahlen with the intention to find them later with getWahlen +## please take account of the value of posted properties "wahltag", because getWahlen is searching by wahltagID and +## the date of the wahltag corresponding to this wahltagID is the search parameter for the Wahl in Repo. If there is no +## Wahl with this "wahltag", then you will recive the response from remote client, so you could think that the old Wahl +## could have not been overwritten in the step before. Actualy they were replaced, but if they do not have the date of +## the Wahltag, than indeed is the expected response, the response from remote client. POST {{ WLS_BASISDATEN_SERVICE_URL }}//businessActions/wahlen/wahltagID1 Authorization: {{ token_type }} {{ auth_token }} Content-Type: application/json @@ -25,10 +31,10 @@ Content-Type: application/json [ { "wahlID": "wahl1", - "name": "0", + "name": "aName_1", "reihenfolge": 1, "waehlerverzeichnisnummer": 1, - "wahltag": "2024-06-06", + "wahltag": "2024-07-20", "wahlart": "BTW", "farbe": { "r": 0, From 069bb0fe8c35ab30d459043a50eb56342f28b942 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:18:30 +0200 Subject: [PATCH 3/7] =?UTF-8?q?Test=20Methoden=20f=C3=BCr=20Sicherstellung?= =?UTF-8?q?,=20dass=20Speichern=20neuer=20Wahlen=20die=20vorhandenen=20Wah?= =?UTF-8?q?len=20mit=20gleicher=20wahlID=20=C3=BCberschreibt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/WahlRepositoryTest.java | 18 ++++++ .../WahlenControllerIntegrationTest.java | 37 ++++++----- .../services/wahlen/WahlenServiceTest.java | 62 ++++++++++++++++--- 3 files changed, 93 insertions(+), 24 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java index 9a84e08da..9724dbfb1 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java @@ -91,6 +91,24 @@ void falseWhenNoWahltagExists() { } } + @Test + void savingNewWahlenOverridesExistingWithSameId(){ + repository.deleteAll(); + val wahltagDateToFind = LocalDate.of(2024, 9, 3); + val wahlenToSave_First = List.of( + new Wahl("wahltagID1", "name1_first", 1, 1, wahltagDateToFind, Wahlart.BTW, null, "0"), + new Wahl("wahltagID2", "name2_first", 1, 1, wahltagDateToFind, Wahlart.BTW, null, "1")); + val wahlenToSave_Second = List.of( + new Wahl("wahltagID1", "name1_second", 1, 1, wahltagDateToFind.plusDays(1), Wahlart.BTW, null, "0"), + new Wahl("wahltagID2", "name2_second", 1, 1, wahltagDateToFind.minusDays(1), Wahlart.BTW, null, "1")); + repository.saveAll(wahlenToSave_First); + repository.saveAll(wahlenToSave_Second); + + val foundWahlen = repository.findAll(); + + Assertions.assertThat(foundWahlen).containsExactlyInAnyOrderElementsOf(wahlenToSave_Second); + } + private List createWahlenList() { val wahl1 = new Wahl("wahlID1", "name1", 3L, 1L, LocalDate.now().minusMonths(1), Wahlart.BAW, new Farbe(1, 1, 1), "1"); val wahl2 = new Wahl("wahlID2", "name2", 2L, 2L, LocalDate.now().plusMonths(1), Wahlart.EUW, new Farbe(2, 2, 2), "2"); diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java index 81a26f508..08db2d8ce 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java @@ -190,7 +190,7 @@ class PostWahlen { void newDataIsSet() throws Exception { var searchingForWahltag = new Wahltag("wahltagID", LocalDate.now(), "beschreibung5", "1"); wahltagRepository.save(searchingForWahltag); - val newData = createControllerListOfWahlDTO(searchingForWahltag); + val newData = createControllerListOfWahlDTO(searchingForWahltag, ""); SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL, Authorities.SERVICE_POST_WAHLEN); val request = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) @@ -209,24 +209,33 @@ void newDataIsSet() throws Exception { void existingWahlenAreReplaced() throws Exception { var searchingForWahltag = new Wahltag("wahltagID", LocalDate.now(), "beschreibung6", "1"); wahltagRepository.save(searchingForWahltag); - val newData = createControllerListOfWahlDTO(searchingForWahltag); + val oldData = createControllerListOfWahlDTO(searchingForWahltag, ""); SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL, Authorities.SERVICE_POST_WAHLEN, Authorities.REPOSITORY_READ_WAHL); - val request = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) + val request_first = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) .contentType(MediaType.APPLICATION_JSON).content( - objectMapper.writeValueAsString(newData)); - api.perform(request).andExpect(status().isOk()); - - val expectedPostedWahlen = wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(dtoMapper.fromListOfWahlDTOtoListOfWahlModel(newData)); + objectMapper.writeValueAsString(oldData)); + api.perform(request_first).andExpect(status().isOk()); + val expectedPostedWahlen_old = wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(dtoMapper.fromListOfWahlDTOtoListOfWahlModel(oldData)); val oldSavedWahlen = wahlRepository.findAll(); - Assertions.assertThat(oldSavedWahlen).isEqualTo(expectedPostedWahlen); + Assertions.assertThat(oldSavedWahlen).isEqualTo(expectedPostedWahlen_old); + + val newWahlen = createControllerListOfWahlDTO(searchingForWahltag, "newWahlen"); + val request_second = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) + .contentType(MediaType.APPLICATION_JSON).content( + objectMapper.writeValueAsString(newWahlen)); + api.perform(request_second).andExpect(status().isOk()); + val expectedPostedWahlen_new = wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(dtoMapper.fromListOfWahlDTOtoListOfWahlModel(newWahlen)); + val newSavedWahlen = wahlRepository.findAll(); + + Assertions.assertThat(newSavedWahlen).isEqualTo(expectedPostedWahlen_new); } @Test void fachlicheWlsExceptionWhenRequestIsInvalid() throws Exception { var searchingForWahltag = new Wahltag("wahltagID", LocalDate.now(), "beschreibung7", "1"); wahltagRepository.save(searchingForWahltag); - val newData = createControllerListOfWahlDTO(searchingForWahltag); + val newData = createControllerListOfWahlDTO(searchingForWahltag, ""); SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL, Authorities.SERVICE_POST_WAHLEN, Authorities.REPOSITORY_READ_WAHL); val request = MockMvcRequestBuilders.post("/businessActions/wahlen/" + " ").with(csrf()).contentType(MediaType.APPLICATION_JSON).content( @@ -260,7 +269,7 @@ void fachlicheWlsExceptionWhenNotSaveableCauseOfMissingRequestbody() throws Exce class ResetWahlen { @Test - void existingWahlenAreReplaced() throws Exception { + void existingWahlenAreReseted() throws Exception { SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL); val oldRepositoryWahlen = createWahlEntities(); wahlRepository.saveAll(oldRepositoryWahlen); @@ -303,12 +312,12 @@ private Set createClientSetOfWahlDTO(Wahltag searchingForWahltag) { return Set.of(wahl1, wahl2, wahl3).stream().filter(wahl -> (wahl.getWahltag().equals(searchingForWahltag.getWahltag()))).collect(Collectors.toSet()); } - private List createControllerListOfWahlDTO(Wahltag searchingForWahltag) { - val wahl1 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID1", "name1", 3L, 1L, searchingForWahltag.getWahltag(), + private List createControllerListOfWahlDTO(Wahltag searchingForWahltag, final String namePraefix) { + val wahl1 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID1", namePraefix + "name1", 3L, 1L, searchingForWahltag.getWahltag(), Wahlart.BAW, new Farbe(1, 1, 1), "1"); - val wahl2 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID2", "name2", 3L, 1L, searchingForWahltag.getWahltag(), + val wahl2 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID2", namePraefix + "name2", 3L, 1L, searchingForWahltag.getWahltag(), Wahlart.BAW, new Farbe(1, 1, 1), "2"); - val wahl3 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID3", "name3", 3L, 1L, LocalDate.now().plusMonths(2), + val wahl3 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID3", namePraefix + "name3", 3L, 1L, LocalDate.now().plusMonths(2), Wahlart.BAW, new Farbe(1, 1, 1), "3"); return Stream.of(wahl1, wahl2, wahl3).filter(wahl -> (wahl.wahltag().equals(searchingForWahltag.getWahltag()))).collect(Collectors.toList()); diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java index a65cff539..b6d87fafc 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java @@ -53,7 +53,7 @@ class GetWahlen { @Test void ifRepoDataFoundThanReturnsRepoDataAndMakesNoCallToRemoteClient() { var searchingForWahltag = new WahltagModel("wahltagID", LocalDate.now(), "beschreibung14", "1"); - List mockedListOfEntities = createWahlEntities(); + List mockedListOfEntities = createWahlEntities(""); List mockedListOfModels = createWahlModels(""); Mockito.doNothing().when(wahlenValidator).validWahlenCriteriaOrThrow("wahltagID"); @@ -73,7 +73,7 @@ void ifRepoDataFoundThanReturnsRepoDataAndMakesNoCallToRemoteClient() { @Test void ifRepoDataNotFoundThanReturnsRemoteClientData() { var searchingForWahltag = new WahltagModel("wahltagID", LocalDate.now(), "beschreibung15", "1"); - List mockedListOfEntities = createWahlEntities(); + List mockedListOfEntities = createWahlEntities(""); List mockedListOfModelsIfClientCall = createWahlModels("clientPraefix"); Mockito.doNothing().when(wahlenValidator).validWahlenCriteriaOrThrow("wahltagID"); @@ -98,7 +98,7 @@ class PostWahlen { void dataSaved() { val wahltagID = "wahltagID"; List mockedListOfModels = createWahlModels(""); - List mockedListOfEntities = createWahlEntities(); + List mockedListOfEntities = createWahlEntities(""); val wahlenToWrite = new WahlenWriteModel(wahltagID, mockedListOfModels); Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModels)).thenReturn(mockedListOfEntities); @@ -112,7 +112,7 @@ void dataSaved() { void wlsExceptionWhenSavingFailed() { val wahltagID = "wahltagID"; List mockedListOfModels = createWahlModels(""); - List mockedListOfEntities = createWahlEntities(); + List mockedListOfEntities = createWahlEntities(""); val wahlenToWrite = new WahlenWriteModel(wahltagID, mockedListOfModels); val mockedRepoSaveException = new RuntimeException("saving failed"); @@ -125,6 +125,48 @@ void wlsExceptionWhenSavingFailed() { Assertions.assertThatThrownBy(() -> unitUnderTest.postWahlen(wahlenToWrite)).isSameAs(mockedWlsException); } + + @Test + void postingNewWahlenOverridesExistingWithSameId(){ + val wahltagID = "wahltagID"; + var searchingForWahltag = new WahltagModel(wahltagID, LocalDate.now().plusMonths(1), "beschreibung1", "1"); + + List mockedListOfModels_first = createWahlModels("first"); + List mockedListOfEntities_first = createWahlEntities("first"); + val wahlenToWrite_first = new WahlenWriteModel(wahltagID, mockedListOfModels_first); + Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModels_first)).thenReturn(mockedListOfEntities_first); + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.postWahlen(wahlenToWrite_first)); + Mockito.verify(wahlenValidator).validWahlenWriteModelOrThrow(new WahlenWriteModel(wahltagID, mockedListOfModels_first)); + Mockito.verify(wahlRepository).saveAll(mockedListOfEntities_first); + Mockito.doNothing().when(wahlenValidator).validWahlenCriteriaOrThrow(wahltagID); + Mockito.when(wahltageService.getWahltagByID(wahltagID)).thenReturn(searchingForWahltag); + Mockito.when(wahlRepository.existsByWahltag(searchingForWahltag.wahltag())).thenReturn(true); + Mockito.when(wahlRepository.findByWahltagOrderByReihenfolge(searchingForWahltag.wahltag())).thenReturn(mockedListOfEntities_first); + Mockito.when(wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_first)).thenReturn(mockedListOfModels_first); + + val expectedResult_first = wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_first); + val result_first = unitUnderTest.getWahlen(wahltagID); + Assertions.assertThatCode(() -> unitUnderTest.getWahlen(wahltagID)).doesNotThrowAnyException(); + Assertions.assertThat(result_first).isEqualTo(expectedResult_first); + + List mockedListOfModels_second = createWahlModels("second"); + List mockedListOfEntities_second = createWahlEntities("second"); + val wahlenToWrite_second = new WahlenWriteModel(wahltagID, mockedListOfModels_second); + Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModels_second)).thenReturn(mockedListOfEntities_second); + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.postWahlen(wahlenToWrite_second)); + Mockito.verify(wahlenValidator).validWahlenWriteModelOrThrow(new WahlenWriteModel(wahltagID, mockedListOfModels_second)); + Mockito.verify(wahlRepository).saveAll(mockedListOfEntities_second); + + Mockito.when(wahlRepository.findByWahltagOrderByReihenfolge(searchingForWahltag.wahltag())).thenReturn(mockedListOfEntities_second); + Mockito.when(wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_second)).thenReturn(mockedListOfModels_second); + + val expectedResult_second = wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_second); + val result_second = unitUnderTest.getWahlen(wahltagID); + Assertions.assertThatCode(() -> unitUnderTest.getWahlen(wahltagID)).doesNotThrowAnyException(); + Assertions.assertThat(result_second).isEqualTo(expectedResult_second); + + Mockito.verifyNoInteractions(wahlenClient); + } } @Nested @@ -134,11 +176,11 @@ class ResetWahlen { void dataSuccessfullyReseted() { ArgumentCaptor> reqCaptor = ArgumentCaptor.forClass(List.class); - val wahlenToReset = createWahlEntities(); + val wahlenToReset = createWahlEntities(""); Mockito.when(wahlRepository.findAll()).thenReturn(wahlenToReset); Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.resetWahlen()); - val resetedWahlen = createWahlEntities().stream().map(this::resetWahl).toList(); + val resetedWahlen = createWahlEntities("").stream().map(this::resetWahl).toList(); Mockito.verify(wahlRepository).saveAll(reqCaptor.capture()); Assertions.assertThat(reqCaptor.getValue()).containsExactlyInAnyOrderElementsOf(resetedWahlen); @@ -152,10 +194,10 @@ private Wahl resetWahl(Wahl wahl) { } } - private List createWahlEntities() { + private List createWahlEntities(final String clientPraefix) { Wahl wahl1 = new Wahl(); wahl1.setWahlID("wahlid1"); - wahl1.setName("wahl1"); + wahl1.setName(clientPraefix + "wahl1"); wahl1.setNummer("0"); wahl1.setFarbe(new Farbe(1, 1, 1)); wahl1.setWahlart(Wahlart.BAW); @@ -165,7 +207,7 @@ private List createWahlEntities() { Wahl wahl2 = new Wahl(); wahl2.setWahlID("wahlid2"); - wahl2.setName("wahl2"); + wahl2.setName(clientPraefix + "wahl2"); wahl2.setNummer("1"); wahl2.setFarbe(new Farbe(2, 2, 2)); wahl2.setWahlart(Wahlart.LTW); @@ -175,7 +217,7 @@ private List createWahlEntities() { Wahl wahl3 = new Wahl(); wahl3.setWahlID("wahlid3"); - wahl3.setName("wahl3"); + wahl3.setName(clientPraefix + "wahl3"); wahl3.setNummer("2"); wahl3.setFarbe(new Farbe(3, 3, 3)); wahl3.setWahlart(Wahlart.EUW); From 71415e2d7dea051e782234c83376e5753711cbe5 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:50:43 +0200 Subject: [PATCH 4/7] spotless korrekturen --- .../basisdatenservice/domain/WahlRepositoryTest.java | 2 +- .../rest/wahlen/WahlenControllerIntegrationTest.java | 12 ++++++++---- .../services/wahlen/WahlenServiceTest.java | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java index 9724dbfb1..b6759fc2b 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java @@ -92,7 +92,7 @@ void falseWhenNoWahltagExists() { } @Test - void savingNewWahlenOverridesExistingWithSameId(){ + void savingNewWahlenOverridesExistingWithSameId() { repository.deleteAll(); val wahltagDateToFind = LocalDate.of(2024, 9, 3); val wahlenToSave_First = List.of( diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java index 08db2d8ce..6e878e4db 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java @@ -312,12 +312,16 @@ private Set createClientSetOfWahlDTO(Wahltag searchingForWahltag) { return Set.of(wahl1, wahl2, wahl3).stream().filter(wahl -> (wahl.getWahltag().equals(searchingForWahltag.getWahltag()))).collect(Collectors.toSet()); } - private List createControllerListOfWahlDTO(Wahltag searchingForWahltag, final String namePraefix) { - val wahl1 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID1", namePraefix + "name1", 3L, 1L, searchingForWahltag.getWahltag(), + private List createControllerListOfWahlDTO(Wahltag searchingForWahltag, + final String namePraefix) { + val wahl1 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID1", namePraefix + "name1", 3L, 1L, + searchingForWahltag.getWahltag(), Wahlart.BAW, new Farbe(1, 1, 1), "1"); - val wahl2 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID2", namePraefix + "name2", 3L, 1L, searchingForWahltag.getWahltag(), + val wahl2 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID2", namePraefix + "name2", 3L, 1L, + searchingForWahltag.getWahltag(), Wahlart.BAW, new Farbe(1, 1, 1), "2"); - val wahl3 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID3", namePraefix + "name3", 3L, 1L, LocalDate.now().plusMonths(2), + val wahl3 = new de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.WahlDTO("wahlID3", namePraefix + "name3", 3L, 1L, + LocalDate.now().plusMonths(2), Wahlart.BAW, new Farbe(1, 1, 1), "3"); return Stream.of(wahl1, wahl2, wahl3).filter(wahl -> (wahl.wahltag().equals(searchingForWahltag.getWahltag()))).collect(Collectors.toList()); diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java index b6d87fafc..592d5e2dd 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java @@ -127,7 +127,7 @@ void wlsExceptionWhenSavingFailed() { } @Test - void postingNewWahlenOverridesExistingWithSameId(){ + void postingNewWahlenOverridesExistingWithSameId() { val wahltagID = "wahltagID"; var searchingForWahltag = new WahltagModel(wahltagID, LocalDate.now().plusMonths(1), "beschreibung1", "1"); From fe5e5da2acfacc759f2fdf9d18e8d74d575e12f0 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:08:12 +0200 Subject: [PATCH 5/7] http-File PostWahlen setzt das gleiche Datum in Wahlen wie im Wahltag der wahltagID1 aus DummyClient --- .../src/test/resources/wahlen.http | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/wls-basisdaten-service/src/test/resources/wahlen.http b/wls-basisdaten-service/src/test/resources/wahlen.http index 10101fe7b..78b5ec6e4 100644 --- a/wls-basisdaten-service/src/test/resources/wahlen.http +++ b/wls-basisdaten-service/src/test/resources/wahlen.http @@ -18,12 +18,18 @@ GET {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/userinfo Authorization: {{ token_type }} {{ auth_token }} ### POST Wahlen -## If you want to POST Wahlen to override existing Wahlen with the intention to find them later with getWahlen -## please take account of the value of posted properties "wahltag", because getWahlen is searching by wahltagID and -## the date of the wahltag corresponding to this wahltagID is the search parameter for the Wahl in Repo. If there is no -## Wahl with this "wahltag", then you will recive the response from remote client, so you could think that the old Wahl -## could have not been overwritten in the step before. Actualy they were replaced, but if they do not have the date of -## the Wahltag, than indeed is the expected response, the response from remote client. +## Hier wird das Datum des Wahltages mit der wahltagID1 gesetzt (today - 2 months) - siehe DummyClient +< {% + const today = new Date(); + let dd = today.getDate(); + const mm = today.getMonth(); + let yyyy_2MonthsBefore = (mm < 2) ? new Date().getFullYear() - 1 : new Date().getFullYear(); + let mm_2MonthsBefore = (mm % 12) - 1; + if (dd < 10) dd = '0' + dd; + if (mm_2MonthsBefore < 10) mm_2MonthsBefore = '0' + mm_2MonthsBefore; + const dateOfWahltagID1 = ('"' + yyyy_2MonthsBefore + '-' + mm_2MonthsBefore + '-' + dd + '"'); + request.variables.set("dateOfWahltagID1", dateOfWahltagID1); +%} POST {{ WLS_BASISDATEN_SERVICE_URL }}//businessActions/wahlen/wahltagID1 Authorization: {{ token_type }} {{ auth_token }} Content-Type: application/json @@ -34,7 +40,7 @@ Content-Type: application/json "name": "aName_1", "reihenfolge": 1, "waehlerverzeichnisnummer": 1, - "wahltag": "2024-07-20", + "wahltag": {{ dateOfWahltagID1 }}, "wahlart": "BTW", "farbe": { "r": 0, @@ -48,7 +54,7 @@ Content-Type: application/json "name": "1", "reihenfolge": 2, "waehlerverzeichnisnummer": 1, - "wahltag": "2024-06-06", + "wahltag": {{ dateOfWahltagID1 }}, "wahlart": "EUW", "farbe": { "r": 3, @@ -62,7 +68,7 @@ Content-Type: application/json "name": "2-", "reihenfolge": 3, "waehlerverzeichnisnummer": 1, - "wahltag": "2024-06-06", + "wahltag": {{ dateOfWahltagID1 }}, "wahlart": "LTW", "farbe": { "r": 6, From 3855fc29e8570c65617ac6314d64733425f797c7 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:18:18 +0200 Subject: [PATCH 6/7] CamelCase Vereinheitlichung --- .../rest/wahlen/WahlenControllerIntegrationTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java index 6e878e4db..bb89bf8d9 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java @@ -211,20 +211,20 @@ void existingWahlenAreReplaced() throws Exception { wahltagRepository.save(searchingForWahltag); val oldData = createControllerListOfWahlDTO(searchingForWahltag, ""); SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL, Authorities.SERVICE_POST_WAHLEN, Authorities.REPOSITORY_READ_WAHL); - val request_first = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) + val requestFirst = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) .contentType(MediaType.APPLICATION_JSON).content( objectMapper.writeValueAsString(oldData)); - api.perform(request_first).andExpect(status().isOk()); + api.perform(requestFirst).andExpect(status().isOk()); val expectedPostedWahlen_old = wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(dtoMapper.fromListOfWahlDTOtoListOfWahlModel(oldData)); val oldSavedWahlen = wahlRepository.findAll(); Assertions.assertThat(oldSavedWahlen).isEqualTo(expectedPostedWahlen_old); val newWahlen = createControllerListOfWahlDTO(searchingForWahltag, "newWahlen"); - val request_second = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) + val requestSecond = MockMvcRequestBuilders.post("/businessActions/wahlen/" + searchingForWahltag.getWahltagID()).with(csrf()) .contentType(MediaType.APPLICATION_JSON).content( objectMapper.writeValueAsString(newWahlen)); - api.perform(request_second).andExpect(status().isOk()); + api.perform(requestSecond).andExpect(status().isOk()); val expectedPostedWahlen_new = wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(dtoMapper.fromListOfWahlDTOtoListOfWahlModel(newWahlen)); val newSavedWahlen = wahlRepository.findAll(); From 688e707c7f0d570829f77031418f6172b0d37a8c Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:27:02 +0200 Subject: [PATCH 7/7] CamelCase Vereinheitlichung neu --- .../services/wahlen/WahlenServiceTest.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java index 592d5e2dd..d7469568f 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java @@ -131,39 +131,39 @@ void postingNewWahlenOverridesExistingWithSameId() { val wahltagID = "wahltagID"; var searchingForWahltag = new WahltagModel(wahltagID, LocalDate.now().plusMonths(1), "beschreibung1", "1"); - List mockedListOfModels_first = createWahlModels("first"); - List mockedListOfEntities_first = createWahlEntities("first"); - val wahlenToWrite_first = new WahlenWriteModel(wahltagID, mockedListOfModels_first); - Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModels_first)).thenReturn(mockedListOfEntities_first); - Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.postWahlen(wahlenToWrite_first)); - Mockito.verify(wahlenValidator).validWahlenWriteModelOrThrow(new WahlenWriteModel(wahltagID, mockedListOfModels_first)); - Mockito.verify(wahlRepository).saveAll(mockedListOfEntities_first); + List mockedListOfModelsFirst = createWahlModels("first"); + List mockedListOfEntitiesFirst = createWahlEntities("first"); + val wahlenToWriteFirst = new WahlenWriteModel(wahltagID, mockedListOfModelsFirst); + Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModelsFirst)).thenReturn(mockedListOfEntitiesFirst); + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.postWahlen(wahlenToWriteFirst)); + Mockito.verify(wahlenValidator).validWahlenWriteModelOrThrow(new WahlenWriteModel(wahltagID, mockedListOfModelsFirst)); + Mockito.verify(wahlRepository).saveAll(mockedListOfEntitiesFirst); Mockito.doNothing().when(wahlenValidator).validWahlenCriteriaOrThrow(wahltagID); Mockito.when(wahltageService.getWahltagByID(wahltagID)).thenReturn(searchingForWahltag); Mockito.when(wahlRepository.existsByWahltag(searchingForWahltag.wahltag())).thenReturn(true); - Mockito.when(wahlRepository.findByWahltagOrderByReihenfolge(searchingForWahltag.wahltag())).thenReturn(mockedListOfEntities_first); - Mockito.when(wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_first)).thenReturn(mockedListOfModels_first); + Mockito.when(wahlRepository.findByWahltagOrderByReihenfolge(searchingForWahltag.wahltag())).thenReturn(mockedListOfEntitiesFirst); + Mockito.when(wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntitiesFirst)).thenReturn(mockedListOfModelsFirst); - val expectedResult_first = wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_first); - val result_first = unitUnderTest.getWahlen(wahltagID); + val expectedResultFirst = wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntitiesFirst); + val resultFirst = unitUnderTest.getWahlen(wahltagID); Assertions.assertThatCode(() -> unitUnderTest.getWahlen(wahltagID)).doesNotThrowAnyException(); - Assertions.assertThat(result_first).isEqualTo(expectedResult_first); + Assertions.assertThat(resultFirst).isEqualTo(expectedResultFirst); - List mockedListOfModels_second = createWahlModels("second"); - List mockedListOfEntities_second = createWahlEntities("second"); - val wahlenToWrite_second = new WahlenWriteModel(wahltagID, mockedListOfModels_second); - Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModels_second)).thenReturn(mockedListOfEntities_second); - Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.postWahlen(wahlenToWrite_second)); - Mockito.verify(wahlenValidator).validWahlenWriteModelOrThrow(new WahlenWriteModel(wahltagID, mockedListOfModels_second)); - Mockito.verify(wahlRepository).saveAll(mockedListOfEntities_second); + List mockedListOfModelsSecond = createWahlModels("second"); + List mockedListOfEntitiesSecond = createWahlEntities("second"); + val wahlenToWriteSecond = new WahlenWriteModel(wahltagID, mockedListOfModelsSecond); + Mockito.when(wahlModelMapper.fromListOfWahlModeltoListOfWahlEntities(mockedListOfModelsSecond)).thenReturn(mockedListOfEntitiesSecond); + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.postWahlen(wahlenToWriteSecond)); + Mockito.verify(wahlenValidator).validWahlenWriteModelOrThrow(new WahlenWriteModel(wahltagID, mockedListOfModelsSecond)); + Mockito.verify(wahlRepository).saveAll(mockedListOfEntitiesSecond); - Mockito.when(wahlRepository.findByWahltagOrderByReihenfolge(searchingForWahltag.wahltag())).thenReturn(mockedListOfEntities_second); - Mockito.when(wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_second)).thenReturn(mockedListOfModels_second); + Mockito.when(wahlRepository.findByWahltagOrderByReihenfolge(searchingForWahltag.wahltag())).thenReturn(mockedListOfEntitiesSecond); + Mockito.when(wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntitiesSecond)).thenReturn(mockedListOfModelsSecond); - val expectedResult_second = wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntities_second); - val result_second = unitUnderTest.getWahlen(wahltagID); + val expectedResultSecond = wahlModelMapper.fromListOfWahlEntityToListOfWahlModel(mockedListOfEntitiesSecond); + val resultSecond = unitUnderTest.getWahlen(wahltagID); Assertions.assertThatCode(() -> unitUnderTest.getWahlen(wahltagID)).doesNotThrowAnyException(); - Assertions.assertThat(result_second).isEqualTo(expectedResult_second); + Assertions.assertThat(resultSecond).isEqualTo(expectedResultSecond); Mockito.verifyNoInteractions(wahlenClient); }