Hendrik Jungnitsch
2022-08-26 30d5aab9dd725ff39195e99b421659c365c380dd
Junctions hinzugefügt
5 Dateien hinzugefügt
134 ■■■■■ Geänderte Dateien
src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java 19 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/jpa/exercise/domain/JunctionKind.java 5 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/jpa/exercise/repository/JunctionRepository.java 11 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java 37 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise02Test.java 62 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java
Neue Datei
@@ -0,0 +1,19 @@
package de.gedoplan.seminar.jpa.exercise.domain;
public class Junction {
    private Integer id;
    private String name;
    private JunctionKind kind;
    private String no;
    public Junction(String name, JunctionKind kind, String no) {
        this.name = name;
        this.kind = kind;
        this.no = no;
    }
}
src/main/java/de/gedoplan/seminar/jpa/exercise/domain/JunctionKind.java
Neue Datei
@@ -0,0 +1,5 @@
package de.gedoplan.seminar.jpa.exercise.domain;
public enum JunctionKind {
  EXIT, INTERCHANGE
}
src/main/java/de/gedoplan/seminar/jpa/exercise/repository/JunctionRepository.java
Neue Datei
@@ -0,0 +1,11 @@
package de.gedoplan.seminar.jpa.exercise.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import de.gedoplan.seminar.jpa.exercise.domain.Junction;
@Repository
public interface JunctionRepository extends JpaRepository<Junction, Integer> {
}
src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
Neue Datei
@@ -0,0 +1,37 @@
package de.gedoplan.seminar.jpa.exercise.rest;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
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.RestController;
import de.gedoplan.seminar.jpa.exercise.domain.Junction;
import de.gedoplan.seminar.jpa.exercise.repository.JunctionRepository;
@RestController
@RequestMapping("/junctions")
public class JunctionResource {
  @Autowired
  Logger logger;
  @Autowired
  JunctionRepository junctionRepository;
  /**
   * Exercise JPA_BASICS_02: Insert test data.
   */
  @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
  public void insert(@RequestBody Junction junction) {
    this.logger.debug("----- insert -----");
    this.junctionRepository.save(junction);
    this.logger.debug("Inserted: " + junction);
  }
}
src/test/java/de/gedoplan/seminar/jpa/exercise/Exercise02Test.java
Neue Datei
@@ -0,0 +1,62 @@
package de.gedoplan.seminar.jpa.exercise;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.util.stream.Stream;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.params.ParameterizedTest;
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;
import de.gedoplan.seminar.jpa.exercise.domain.Junction;
import de.gedoplan.seminar.jpa.exercise.domain.JunctionKind;
@TestMethodOrder(MethodOrderer.MethodName.class)
@AutoConfigureMockMvc
@SpringBootTest
public class Exercise02Test {
    // Sample junctions
    // ... of A1
    private static Junction testJunctionSchwerte = new Junction("Schwerte", JunctionKind.EXIT, "85");
    private static Junction testJunctionKreuzWesthofen = new Junction("Westhofener Kreuz", JunctionKind.INTERCHANGE,
            "86");
    private static Junction testJunctionHagenNord = new Junction("Hagen-Nord", JunctionKind.EXIT, "87");
    // ... of A2
    private static Junction testJunctionHerfordBadSalzuflen = new Junction("Herford/Bad Salzuflen", JunctionKind.EXIT,
            "29");
    private static Junction testJunctionBielefeldOst = new Junction("Bielefeld-Ost", JunctionKind.EXIT, "27");
    private static Junction testJunctionOWL = new Junction("Ostwestfalen/Lippe", JunctionKind.EXIT, "28");
    // ... of A33
    private static Junction testJunctionPaderbornZentrum = new Junction("Paderborn-Zentrum", JunctionKind.EXIT, "17");
    @Autowired
    MockMvc mockMvc;
    @Autowired
    private ObjectMapper mapper;
    @ParameterizedTest
    @MethodSource("getTestJunctions")
    void test01_insert(Junction junction) throws Exception {
        mockMvc.perform(
                post("/junctions").contentType(MediaType.APPLICATION_JSON).content(mapper.writeValueAsString(junction)))
                .andExpect(status().isOk());
    }
    private static Stream<Junction> getTestJunctions() {
        return Stream.of(testJunctionSchwerte, testJunctionKreuzWesthofen, testJunctionHagenNord,
                testJunctionHerfordBadSalzuflen, testJunctionBielefeldOst, testJunctionOWL,
                testJunctionPaderbornZentrum);
    }
}