From 18134907066301a801f4747926592c5977141279 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mo, 14 Nov 2022 12:24:21 +0100
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