package de.gedoplan.seminar.jpa.exercise; import static org.junit.jupiter.params.provider.Arguments.arguments; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.util.stream.Stream; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import com.fasterxml.jackson.databind.ObjectMapper; import de.gedoplan.seminar.jpa.exercise.domain.Highway; @AutoConfigureMockMvc @SpringBootTest public class Exercise01Test { // Some test data private Highway testHighwayA1_DO_K = new Highway(4610, "A1", "Dortmund", "Cologne"); private Highway testHighwayA2_DO_H = new Highway(4711, "A2", "Dortmund", "Hannover"); private Highway testHighwayA33_BI_PB = new Highway(4812, "A33", "Bielefeld", "Paderborn"); @Autowired MockMvc mockMvc; @Autowired private ObjectMapper mapper; @Test @Order(1) @MethodSource("getTestHighways") void testInsert() throws Exception { mockMvc.perform(post("/highways") .contentType(MediaType.APPLICATION_JSON) .content(mapper.writeValueAsString(testHighwayA1_DO_K))) .andExpect(status().isOk()); } @Test @Order(2) @MethodSource("getTestDataFindById") void testFindById(Integer id, String name) throws Exception { mockMvc.perform(post("/highways/{id}",id)) .andExpect(jsonPath("$.name").value(name)); } private Stream getTestHighways() { return Stream.of(this.testHighwayA1_DO_K, this.testHighwayA2_DO_H, this.testHighwayA33_BI_PB); } private Stream getTestDataFindById() { return Stream.of( arguments(4711,"A2"), arguments(4812, "A33")); } }