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/test/java/de/gedoplan/seminar/jpa/exercise/Exercise04Test.java |  138 ++++++++++++---------------------------------
 1 files changed, 38 insertions(+), 100 deletions(-)

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