diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java index ba6f94d6a7ba3f5518b8b371b8a1d346161afb94..409f8e2d9470ac8107d5c8592542bc7003f2085e 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java @@ -27,8 +27,6 @@ import static de.ozgcloud.alfa.vorgang.EingangTestFactory.*; import static org.assertj.core.api.AssertionsForClassTypes.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import java.util.List; @@ -47,10 +45,12 @@ import org.mockito.Spy; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; import org.springframework.hateoas.EntityModel; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.test.web.servlet.assertj.MockMvcTester; +import org.springframework.test.web.servlet.assertj.MockMvcTester.MockMvcRequestBuilder; +import org.springframework.test.web.servlet.assertj.MvcTestResultAssert; +import org.springframework.web.util.UriComponentsBuilder; import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService; @@ -64,7 +64,7 @@ import lombok.SneakyThrows; class VorgangControllerTest { private static final String RESET_POSTFACH_NACHRICHT_PATH = VorgangController.PATH + "/{0}/hasNewPostfachNachricht"; - private static final String PATH = VorgangController.PATH + "/"; + private static final String PATH = VorgangController.PATH; @Spy @InjectMocks @@ -80,11 +80,11 @@ class VorgangControllerTest { @Mock private StatisticController statisticController; - private MockMvc mockMvc; + private MockMvcTester mockMvcTester; @BeforeEach void initTest() { - mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + mockMvcTester = MockMvcTester.of(controller); } @DisplayName("VorgangList") @@ -137,10 +137,10 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -188,11 +188,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_STATUS, STATUS.toString())) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_STATUS, STATUS.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -240,11 +240,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_SEARCH, SEARCH_BY)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_SEARCH, SEARCH_BY).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -307,11 +307,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -383,12 +383,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_SEARCH, SEARCH_BY)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_SEARCH, SEARCH_BY) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -460,12 +460,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_STATUS, STATUS.toString())) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_STATUS, STATUS.toString()) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -520,11 +520,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } @DisplayName("Get all by assignedTo and existing next wiedervorlage frist") @@ -602,12 +602,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) + .queryParam(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } } @@ -661,7 +661,7 @@ class VorgangControllerTest { class WithoutParamNachrichtenUngelesene { @ParameterizedTest - @ValueSource(strings = {"", "dummy"}) + @ValueSource(strings = { "", "dummy" }) void shouldCriteriaHaveHasUngeleseneNachrichtenFalse(String nachrichtenValue) { doRequestWithNachrichtenParam(nachrichtenValue); @@ -672,11 +672,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequestWithNachrichtenParam(String paramValue) { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_NACHRICHTEN, paramValue)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_NACHRICHTEN, paramValue).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -749,7 +749,7 @@ class VorgangControllerTest { class WithoutParamNachrichtenUngelesene { @ParameterizedTest - @ValueSource(strings = {"", "dummy"}) + @ValueSource(strings = { "", "dummy" }) void shouldCriteriaHaveHasUngeleseneNachrichtenFalse(String nachrichtenValue) { doRequestWithNachrichtenParam(nachrichtenValue); @@ -760,12 +760,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequestWithNachrichtenParam(String paramValue) { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_NACHRICHTEN, paramValue)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) + .queryParam(VorgangController.PARAM_NACHRICHTEN, paramValue).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } } @@ -848,32 +848,36 @@ class VorgangControllerTest { @DisplayName("Single Field should be in json first level") @Test void singleField() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + SINGLE_FIELD_NAME).value(SINGLE_FIELD_VALUE)); + var assertResult = performRequest(); + + assertResult.hasContentTypeCompatibleWith(MediaType.APPLICATION_JSON).bodyJson() + .extractingPath("$.eingang.formData." + SINGLE_FIELD_NAME).isEqualTo(SINGLE_FIELD_VALUE); } @DisplayName("Numeric field should be numeric in json") @Test void numericField() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + NUMERIC_FIELD_NAME).isNumber()); - performRequest().andExpect(jsonPath("$.eingang.formData." + NUMERIC_FIELD_NAME).value(NUMERIC_FIELD_VALUE)); + var assertResult = performRequest(); + + assertResult.hasContentTypeCompatibleWith(MediaType.APPLICATION_JSON).bodyJson() + .extractingPath("$.eingang.formData." + NUMERIC_FIELD_NAME).isEqualTo(NUMERIC_FIELD_VALUE); } @DisplayName("SubForm should have name as key") @Test void keyOfsubForm() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + SUBFORM_NAME).isMap()); - } + var assertResult = performRequest(); - @DisplayName("SubForm-Field should be present") - @Test - void subFormField() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + SUBFORM_NAME + "." + SUBFORM_FIELD_NAME).value(SUBFORM_FIELD_VALUE)); + assertResult.hasContentTypeCompatibleWith(MediaType.APPLICATION_JSON).bodyJson() + .extractingPath("$.eingang.formData." + SUBFORM_NAME).asMap().containsEntry(SUBFORM_FIELD_NAME, SUBFORM_FIELD_VALUE); } } - private ResultActions performRequest() throws Exception { - return mockMvc.perform(get(PATH + "/" + VorgangHeaderTestFactory.ID)).andExpect(status().isOk()); + private MvcTestResultAssert performRequest() throws Exception { + var uri = UriComponentsBuilder.fromPath(PATH).pathSegment(VorgangHeaderTestFactory.ID).build().toUri(); + System.out.println(uri.toString()); + return mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -882,23 +886,22 @@ class VorgangControllerTest { class TestResetNewPostfachNachricht { @Test - void resetNewPostfachNachricht() throws Exception { - performRequest("{\"hasNewPostfachNachricht\":false}").andExpect(status().isNoContent()); + void resetNewPostfachNachricht() { + performRequest("{\"hasNewPostfachNachricht\":false}").assertThat().hasStatus(HttpStatus.NO_CONTENT); verify(clientAttributeService).resetPostfachNachricht(VorgangHeaderTestFactory.ID); } @Test - void shouldReturnUnprocessableEntity() throws Exception { - performRequest("{\"hasNewPostfachNachricht\":true}").andExpect(status().isUnprocessableEntity()); + void shouldReturnUnprocessableEntity() { + performRequest("{\"hasNewPostfachNachricht\":true}").assertThat().hasStatus(HttpStatus.UNPROCESSABLE_ENTITY); verify(clientAttributeService, never()).resetPostfachNachricht(VorgangHeaderTestFactory.ID); } - private ResultActions performRequest(String body) throws Exception { - return mockMvc - .perform(put(RESET_POSTFACH_NACHRICHT_PATH, VorgangHeaderTestFactory.ID).contentType(MediaType.APPLICATION_JSON_VALUE) - .content(body)); + private MockMvcRequestBuilder performRequest(String body) { + return mockMvcTester.put().uri(RESET_POSTFACH_NACHRICHT_PATH, VorgangHeaderTestFactory.ID).contentType(MediaType.APPLICATION_JSON_VALUE) + .content(body); } } @@ -915,7 +918,7 @@ class VorgangControllerTest { } @ParameterizedTest - @ValueSource(booleans = {true, false}) + @ValueSource(booleans = { true, false }) void shouldReturnServiceResult(boolean serviceResult) { when(vorgangService.isVorgangEditable(vorgang)).thenReturn(serviceResult); diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java index 9223e8e87e0db4f66bb0bfb7bef14aebd99bb894..a15d0bc3d0900391d36bf409bc4e9e18818da370 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java @@ -25,8 +25,6 @@ package de.ozgcloud.alfa.wiedervorlage; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import java.util.stream.Stream; @@ -37,16 +35,16 @@ import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.test.web.servlet.assertj.MockMvcTester; +import org.springframework.test.web.servlet.assertj.MockMvcTester.MockMvcRequestBuilder; +import org.springframework.web.util.UriComponentsBuilder; import de.ozgcloud.alfa.common.binaryfile.BinaryFileController; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; class WiedervorlageControllerTest { - private final String PATH = WiedervorlageController.WIEDERVORLAGE_PATH + "/"; + private static final String PATH = WiedervorlageController.WIEDERVORLAGE_PATH; @Spy @InjectMocks @@ -60,11 +58,11 @@ class WiedervorlageControllerTest { @Mock private WiedervorlageMapper mapper; - private MockMvc mockMvc; + private MockMvcTester mockMvcTester; @BeforeEach void initTest() { - mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + mockMvcTester = MockMvcTester.of(controller); } @Nested @@ -78,26 +76,29 @@ class WiedervorlageControllerTest { } @Test - void shouldReturnStatusOk() throws Exception { - callEndpoint().andExpect(status().isOk()); + void shouldReturnStatusOk() { + var result = callEndpoint(); + + result.assertThat().hasStatusOk(); } @Test - void shouldCallService() throws Exception { - callEndpoint(); + void shouldCallService() { + callEndpoint().exchange(); verify(service).getById(WiedervorlageTestFactory.ID); } @Test - void shouldCallModelAssembler() throws Exception { - callEndpoint(); + void shouldCallModelAssembler() { + callEndpoint().exchange(); verify(modelAssembler).toModel(wiedervorlage); } - private ResultActions callEndpoint() throws Exception { - return mockMvc.perform(get(PATH + WiedervorlageTestFactory.ID)); + private MockMvcRequestBuilder callEndpoint() { + var uri = UriComponentsBuilder.fromUriString(PATH).pathSegment(WiedervorlageTestFactory.ID).build().toUri(); + return mockMvcTester.get().uri(uri); } } @@ -113,25 +114,29 @@ class WiedervorlageControllerTest { @Test void shouldReturnStatusOk() throws Exception { - callEndpoint().andExpect(status().isOk()); + var result = callEndpoint(); + + result.assertThat().hasStatusOk(); } @Test void shouldCallService() throws Exception { - callEndpoint(); + callEndpoint().exchange(); verify(service).findByVorgangId(VorgangHeaderTestFactory.ID); } @Test void shouldCallModelAssembler() throws Exception { - callEndpoint(); + callEndpoint().exchange(); verify(modelAssembler).toCollectionModel(ArgumentMatchers.<Stream<Wiedervorlage>>any(), eq(VorgangHeaderTestFactory.ID)); } - private ResultActions callEndpoint() throws Exception { - return mockMvc.perform(get(PATH).param(WiedervorlageController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID)); + private MockMvcRequestBuilder callEndpoint() throws Exception { + var uri = UriComponentsBuilder.fromUriString(PATH).queryParam(WiedervorlageController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID) + .build().toUri(); + return mockMvcTester.get().uri(uri); } } } \ No newline at end of file