Skip to content

Commit

Permalink
#431 update code + add tests to verify that no NullPointerException i…
Browse files Browse the repository at this point in the history
…s thrown
  • Loading branch information
vjohnslhm committed Nov 15, 2024
1 parent 2c49d7f commit 8adf92c
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.parameters.P;
Expand Down Expand Up @@ -56,7 +57,7 @@ public Optional<WahlvorstandModel> updateWahlvorstand(@P("wahlbezirkID") final S
wahlvorstandValidator.validWahlbezirkIDOrThrow(wahlbezirkID);
KonfigurierterWahltagModel konfigurierterWahltagModel = konfigurierterWahltagClient.getKonfigurierterWahltag();
WahlvorstandModel wahlvorstand = wahlvorstandEaiClient.getWahlvorstand(wahlbezirkID, konfigurierterWahltagModel.wahltag());
return Optional.of(persistWahlvorstand(wahlvorstand, konfigurierterWahltagModel));
return Optional.ofNullable(persistWahlvorstand(wahlvorstand, konfigurierterWahltagModel));
}

@Transactional
Expand Down Expand Up @@ -96,7 +97,7 @@ public Optional<WahlvorstandModel> getFallbackWahlvorstand(String wahlbezirkID)
}

private WahlvorstandModel persistWahlvorstand(WahlvorstandModel wahlvorstand, KonfigurierterWahltagModel konfigurierterWahltagModel) {
if (wahlvorstand == null || wahlvorstand.wahlvorstandsmitglieder().isEmpty()) {
if (wahlvorstand == null || CollectionUtils.isEmpty(wahlvorstand.wahlvorstandsmitglieder())) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import de.muenchen.oss.wahllokalsystem.wahlvorstandservice.utils.TestDataFactory;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.TechnischeWlsException;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory;
import java.util.Collections;
import java.util.Optional;
import lombok.val;
import org.assertj.core.api.Assertions;
Expand Down Expand Up @@ -94,6 +95,48 @@ void should_updateWahlvorstandAndReturnWahlvorstandModel_when_givenValidWahlbezi
Mockito.verify(wahlvorstandValidator).validWahlbezirkIDOrThrow(wahlbezirkID);
Mockito.verify(wahlvorstandRepository).save(mockedWahlvorstand);
}

@Test
void should_notSaveWahlvorstand_when_givenWahlvorstandIsNull() {
val wahlbezirkID = "wahlbezirkID";

val mockedKonfigurierterWahltagFromClient = TestDataFactory.CreateFromClient.konfigurierterWahltagModel();
Mockito.when(konfigurierterWahltagClient.getKonfigurierterWahltag()).thenReturn(mockedKonfigurierterWahltagFromClient);
Mockito.when(wahlvorstandEaiClient.getWahlvorstand(wahlbezirkID, mockedKonfigurierterWahltagFromClient.wahltag()))
.thenReturn(null);

val result = unitUnderTest.updateWahlvorstand(wahlbezirkID);
Assertions.assertThat(result).isEmpty();
}

@Test
void should_notSaveWahlvorstand_when_givenWahlvorstandsMitgliederIsEmpty() {
val wahlbezirkID = "wahlbezirkID";

val mockedKonfigurierterWahltagFromClient = TestDataFactory.CreateFromClient.konfigurierterWahltagModel();
val mockedWahlvorstandModelFromClient = TestDataFactory.CreateFromClient.wahlvorstandModelWithCustomMembers(wahlbezirkID, Collections.emptyList());
Mockito.when(konfigurierterWahltagClient.getKonfigurierterWahltag()).thenReturn(mockedKonfigurierterWahltagFromClient);
Mockito.when(wahlvorstandEaiClient.getWahlvorstand(wahlbezirkID, mockedKonfigurierterWahltagFromClient.wahltag()))
.thenReturn(mockedWahlvorstandModelFromClient);

val result = unitUnderTest.updateWahlvorstand(wahlbezirkID);
Assertions.assertThat(result).isEmpty();
}

@Test
void should_notThrowNullPointerException_when_givenWahlvorstandsMitgliederIsNull() {
val wahlbezirkID = "wahlbezirkID";

val mockedKonfigurierterWahltagFromClient = TestDataFactory.CreateFromClient.konfigurierterWahltagModel();
val mockedWahlvorstandModelFromClient = TestDataFactory.CreateFromClient.wahlvorstandModelWithCustomMembers(wahlbezirkID, null);
Mockito.when(konfigurierterWahltagClient.getKonfigurierterWahltag()).thenReturn(mockedKonfigurierterWahltagFromClient);
Mockito.when(wahlvorstandEaiClient.getWahlvorstand(wahlbezirkID, mockedKonfigurierterWahltagFromClient.wahltag()))
.thenReturn(mockedWahlvorstandModelFromClient);

val result = unitUnderTest.updateWahlvorstand(wahlbezirkID);
Assertions.assertThat(result).isEmpty();
Assertions.assertThatCode(() -> unitUnderTest.updateWahlvorstand(wahlbezirkID)).doesNotThrowAnyException();
}
}

@Nested
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,10 @@ public static WahlvorstandModel wahlvorstandModel(String wahlbezirkID) {

return new WahlvorstandModel(wahlbezirkID, LocalDateTime.now().withNano(0), wahlvorstandsmitgliedModelList);
}

public static WahlvorstandModel wahlvorstandModelWithCustomMembers(String wahlbezirkID, List<WahlvorstandsmitgliedModel> mitglieder) {
return new WahlvorstandModel(wahlbezirkID, LocalDateTime.now().withNano(0), mitglieder);
}
}

public static class MapWahlvorstandsmitglied {
Expand Down

0 comments on commit 8adf92c

Please sign in to comment.