From 4aefdfdd2b3a9864ef488b76b5f9c69ab4c23b9f Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mo, 05 Sep 2022 17:30:44 +0200
Subject: [PATCH] exercise
---
src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java | 6 ++
src/main/java/de/gedoplan/seminar/jpa/exercise/rest/HighwayResource.java | 1
src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise04Test.java | 138 ++++++++++++---------------------------------
3 files changed, 44 insertions(+), 101 deletions(-)
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/HighwayResource.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/HighwayResource.java
index 55864c1..914e1c9 100644
--- a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/HighwayResource.java
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/HighwayResource.java
@@ -11,7 +11,6 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
index cf8969d..7a4c2bf 100644
--- a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
@@ -9,6 +9,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -54,4 +55,9 @@
junction.ifPresent(j -> this.logger.debug(name+": "+j));
return junction.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
}
+
+ @PutMapping("/{junctionId}/assignToHighway/{highwayId}")
+ public void assignToHighway(@PathVariable Integer junctionId, @PathVariable Integer highwayId) {
+
+ }
}
diff --git a/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise04Test.java b/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise04Test.java
index 1ddbb18..b0729de 100644
--- a/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise04Test.java
+++ b/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise04Test.java
@@ -1,16 +1,15 @@
package de.gedoplan.seminar.jpa.exercise;
+import static org.hamcrest.CoreMatchers.is;
import static org.junit.jupiter.params.provider.Arguments.arguments;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
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.hamcrest.MatcherAssert;
import org.junit.jupiter.api.MethodOrderer;
-import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -18,13 +17,9 @@
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;
-import de.gedoplan.seminar.jpa.exercise.domain.Junction;
+import com.jayway.jsonpath.JsonPath;
@TestMethodOrder(MethodOrderer.MethodName.class)
@AutoConfigureMockMvc
@@ -33,108 +28,51 @@
@Autowired
MockMvc mockMvc;
-
- @Autowired
- private ObjectMapper objectMapper;
- @Test
- void test01_joinJunctionsToHighways() throws Exception {
-
- /*
- * Read highways and junctions from the database and associate them.
- * Do not use the objects from TestData directly, because they are transient!
- */
-
- /*
- * Connect highway 4610 with junctions "Schwerte", "Westhofener Kreuz" and "Hagen-Nord"
- */
- Highway highwayA1_DO_K = loadHighway(4610);
-
- Junction junctionSchwerte = loadJunction("Schwerte");
-// highwayA1_DO_K.getJunctions().add(junctionSchwerte);
-// junctionSchwerte.setHighway(highwayA1_DO_K);
-
- Junction junctionWesthofen = loadJunction("Westhofener Kreuz");
-// highwayA1_DO_K.getJunctions().add(junctionWesthofen);
-// junctionWesthofen.setHighway(highwayA1_DO_K);
-
- Junction junctionHagenNord = loadJunction("Hagen-Nord");
-// highwayA1_DO_K.getJunctions().add(junctionHagenNord);
-// junctionHagenNord.setHighway(highwayA1_DO_K);
-
- updateJunctions(junctionSchwerte,junctionWesthofen,junctionHagenNord);
-
- /*
- * Connect highway 4711 with junctions "Bielefeld-Ost", "Ostwestfalen/Lippe" and "Herford/Bad Salzuflen"
- */
- Highway highwayA2_DO_H = loadHighway(4711);
-
- Junction junctionBielefeldOst = loadJunction("Bielefeld-Ost");
-// highwayA2_DO_H.getJunctions().add(junctionBielefeldOst);
-// junctionBielefeldOst.setHighway(highwayA2_DO_H);
-
- Junction junctionOWL = loadJunction("Ostwestfalen/Lippe");
-// highwayA2_DO_H.getJunctions().add(junctionOWL);
-// junctionOWL.setHighway(highwayA2_DO_H);
-
- Junction junctionSennestadt = loadJunction("Herford/Bad Salzuflen");
-// highwayA2_DO_H.getJunctions().add(junctionSennestadt);
-// junctionSennestadt.setHighway(highwayA2_DO_H);
-
- updateJunctions(junctionBielefeldOst,junctionOWL,junctionSennestadt);
-
- /*
- * Connect highway 4812 with junction "Paderborn-Zentrum"
- */
- Highway highwayA33_BI_PB = loadHighway(4812);
-
- Junction junctionStukenbrock = loadJunction("Paderborn-Zentrum");
-// highwayA33_BI_PB.getJunctions().add(junctionStukenbrock);
-// junctionStukenbrock.setHighway(highwayA33_BI_PB);
-
- updateJunctions(junctionStukenbrock);
-
+ @ParameterizedTest
+ @MethodSource("getTestDataJunction")
+ void test01_joinJunctionsToHighways(String junctionName, Integer highwayId) throws Exception {
+ Integer junctionId = loadJunctionId(junctionName);
+ mockMvc.perform(
+ put("/junctions/{junctionId}/assignToHighway/{highwayId}",junctionId,highwayId))
+ .andExpect(status().isOk());
}
@ParameterizedTest
- @MethodSource("getTestData")
- void test2_findById(String junctionName, String highwayName) throws Exception {
+ @MethodSource("getTestDataJunction")
+ void test02_checkHighwayAssignedToJunction(String junctionName, Integer highwayId) throws Exception {
mockMvc.perform(get("/junctions/loadByName").param("name", junctionName))
- .andExpect(jsonPath("$.highway.name").value(highwayName));
+ .andExpect(jsonPath("$.highway.id").value(highwayId.toString()));
+ }
+
+ @ParameterizedTest
+ @MethodSource("getTestDataHighway")
+ void test03_checkJunctionsAssignedToHighway(Integer highwayId, Integer countJunctions) throws Exception {
+ mockMvc.perform(get("/highways/{id}",highwayId))
+ .andExpect(jsonPath("$.name",is(countJunctions)));
}
- private void updateJunctions(Junction... junctions) {
- Stream.of(junctions).forEach(junction ->
- {
- try {
- mockMvc.perform(
- post("/junctions").contentType(MediaType.APPLICATION_JSON).content(objectMapper.writeValueAsString(junction)))
- .andExpect(status().isOk());
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
+ private Integer loadJunctionId(String name) throws Exception {
+ return JsonPath.parse(mockMvc.perform(get("/junctions/loadByName").param("name", name)).andExpect(status().isOk())
+ .andReturn().getResponse().getContentAsString()).read("$.id", Integer.class);
}
- private Highway loadHighway(Integer id) throws Exception {
- return objectMapper.readValue(mockMvc.perform(get("/highways/{id}", id)).andExpect(status().isOk())
- .andReturn().getResponse().getContentAsString(), Highway.class);
- }
-
- private Junction loadJunction(String name) throws Exception {
- return objectMapper.readValue(mockMvc.perform(get("/junctions/loadByName").param("name", name)).andExpect(status().isOk())
- .andReturn().getResponse().getContentAsString(), Junction.class);
- }
-
- private static Stream<Arguments> getTestData() {
+ private static Stream<Arguments> getTestDataJunction() {
return Stream.of(
- arguments("Schwerte","A2"),
- arguments("Westhofener Kreuz", "A1"),
- arguments("Hagen-Nord", "A1"),
- arguments("Bielefeld-Ost", "A2"),
- arguments("Ostwestfalen/Lippe", "A2"),
- arguments("Herford/Bad Salzuflen", "A2"),
- arguments("Paderborn-Zentrum", "A33"));
+ arguments("Schwerte", 4610),
+ arguments("Westhofener Kreuz", 4610),
+ arguments("Hagen-Nord", 4610),
+ arguments("Bielefeld-Ost", 4711),
+ arguments("Ostwestfalen/Lippe", 4711),
+ arguments("Herford/Bad Salzuflen", 4711),
+ arguments("Paderborn-Zentrum", 4812));
+ }
+
+ private static Stream<Arguments> getTestDataHighway() {
+ return Stream.of(
+ arguments(4610,3),
+ arguments(4711,3),
+ arguments(4812,1));
}
}
--
Gitblit v1.7.1