From ba63e9aac75a3e8e59ba00dc2a03bdf0a9433cd2 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mi, 07 Sep 2022 15:32:05 +0200
Subject: [PATCH] exercise07

---
 src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise07Test.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise07Test.java b/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise07Test.java
index fce1c4d..fe124f9 100644
--- a/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise07Test.java
+++ b/src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise07Test.java
@@ -1,23 +1,35 @@
 package de.gedoplan.seminar.jpa.exercise;
 
+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.result.MockMvcResultMatchers.status;
 
 import java.util.List;
+import java.util.stream.Stream;
 
 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;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.slf4j.Logger;
 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.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.type.CollectionType;
 
+import de.gedoplan.seminar.jpa.exercise.domain.Highway;
 import de.gedoplan.seminar.jpa.exercise.domain.Junction;
+import de.gedoplan.seminar.jpa.exercise.domain.TrafficJam;
+import de.gedoplan.seminar.jpa.exercise.domain.TrafficJamCause;
+import de.gedoplan.seminar.jpa.exercise.domain.TrafficJamKind;
 
 @TestMethodOrder(MethodOrderer.MethodName.class)
 @AutoConfigureMockMvc
@@ -35,10 +47,43 @@
 	@Autowired
 	private Logger logger;
 
+	@ParameterizedTest
+	@MethodSource("getTestData")
+	void test01_insert(String junctionStart, String junctionEnd, Integer length, TrafficJamKind kind,
+			TrafficJamCause cause) throws Exception {
+
+		TrafficJam trafficJam = new TrafficJam(loadJunctionId(junctionStart), loadJunctionId(junctionEnd), length, kind,
+				cause);
+		mockMvc.perform(post("/trafficjams").contentType(MediaType.APPLICATION_JSON)
+				.content(mapper.writeValueAsString(trafficJam))).andExpect(status().isOk());
+	}
+
+	@Test
+	void test02_outputTrafficJams() throws Exception {
+		parse(mockMvc.perform(get("/trafficjams")).andExpect(status().isOk()).andReturn().getResponse()
+				.getContentAsString(), TrafficJam.class)
+		.stream().map(this::toMessage).forEach(logger::info);
+
+	}
 	
-	// Test01 insert
-	
-	// Test02 output
+	private String toMessage(TrafficJam trafficJam) {
+		Junction start = trafficJam.getStart();
+	    Highway highway = start.getHighway();
+	    Junction end = trafficJam.getEnd();
+	    return String.format(MESSAGE_FORMAT,
+	      highway.getName(), highway.getOrigin(), highway.getDestination(),
+	      trafficJam.getLength(), trafficJam.getKind(),
+	      start.getName(), end.getName(),
+	      trafficJam.getCause());
+	}
+
+	private static Stream<Arguments> getTestData() {
+		return Stream.of(
+				arguments("Bielefeld-Ost", "Ostwestfalen/Lippe", 2, TrafficJamKind.CONGESTION,
+						TrafficJamCause.ACCIDENT),
+				arguments("Westhofener Kreuz", "Schwerte", 8, TrafficJamKind.SLOW_MOVING_TRAFFIC,
+						TrafficJamCause.ROAD_WORKS));
+	}
 
 
 	private Junction loadJunctionId(String name) throws Exception {

--
Gitblit v1.7.1