diff --git a/build.gradle b/build.gradle index 57267157c..40a581b15 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,8 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'io.rest-assured:rest-assured:5.3.1' } diff --git a/src/main/java/roomescape/HomeController.java b/src/main/java/roomescape/HomeController.java new file mode 100644 index 000000000..e61379f36 --- /dev/null +++ b/src/main/java/roomescape/HomeController.java @@ -0,0 +1,13 @@ +package roomescape; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class HomeController { + + @GetMapping("/") + public String home() { + return "home"; + } +} \ No newline at end of file diff --git a/src/main/java/roomescape/Reservation.java b/src/main/java/roomescape/Reservation.java new file mode 100644 index 000000000..0e2500418 --- /dev/null +++ b/src/main/java/roomescape/Reservation.java @@ -0,0 +1,4 @@ +package roomescape; + + +public record Reservation(long id, String name, String date, String time) {} \ No newline at end of file diff --git a/src/main/java/roomescape/ReservationController.java b/src/main/java/roomescape/ReservationController.java new file mode 100644 index 000000000..af43b0920 --- /dev/null +++ b/src/main/java/roomescape/ReservationController.java @@ -0,0 +1,34 @@ +package roomescape; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.ArrayList; +import java.util.List; + +@Controller +public class ReservationController { + + // Temporary data + private final List reservations = new ArrayList<>( + List.of( + new Reservation(1L, "브라운", "2023-01-01", "10:00"), + new Reservation(2L, "브라운", "2023-01-02", "11:00"), + new Reservation(3L, "브라운", "2023-01-03", "12:00") + ) + ); + + // render reservation.html + @GetMapping("/reservation") + public String reservationPage() { + return "reservation"; + } + + // JSON list + @GetMapping("/reservations") + @ResponseBody + public List list() { + return reservations; + } +} diff --git a/src/test/java/roomescape/MissionStepTest.java b/src/test/java/roomescape/MissionStepTest.java index cf4efbe91..6c8dcef57 100644 --- a/src/test/java/roomescape/MissionStepTest.java +++ b/src/test/java/roomescape/MissionStepTest.java @@ -5,6 +5,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.DirtiesContext; +import static org.hamcrest.Matchers.is; + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) public class MissionStepTest { @@ -16,4 +18,18 @@ public class MissionStepTest { .then().log().all() .statusCode(200); } + + @Test + void 이단계() { + RestAssured.given().log().all() + .when().get("/reservation") + .then().log().all() + .statusCode(200); + + RestAssured.given().log().all() + .when().get("/reservations") + .then().log().all() + .statusCode(200) + .body("size()", is(3)); + } }