Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1 - 3단계 방탈출 사용자 예약] 몰리(김지민) 미션 제출합니다. #22

Merged
merged 92 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
b7fa7c8
chore(/src): 프로젝트 동기화
jminkkk Apr 30, 2024
220dac0
test(RoomescapeApplicationTest): 요구사항 테스트 추가
jminkkk Apr 30, 2024
e9e512a
fix(/resources): 프론트 코드를 제공된 코드로 변경
jminkkk Apr 30, 2024
adcd185
docs(README.md): 요구사항 분석 작성
jminkkk Apr 30, 2024
0140c32
feat(ReservationTimeController): 시간 관리 API가 적절한 응답을 하도록 변경
jminkkk Apr 30, 2024
7d72b09
feat(ReservationController): 예약 관리 API가 적절한 응답을 하도록 변경
jminkkk Apr 30, 2024
d4344c1
fix(ReservationServiceTest, ReservationTimeServiceTest): 깨지는 테스트 수정
jminkkk Apr 30, 2024
84c13ce
feat(CreateReservationTimeRequest): 시간 생성 요청 시 시간이 empty인 경우 예외처리
jminkkk Apr 30, 2024
3ede852
feat(CreateReservationRequest): 예약 생성 시 예약자명, 날짜, 시간에 유효하지 않은 값이 입력된 …
jminkkk Apr 30, 2024
e1db45d
feat(ReservationTimeService): 특정 시간에 대한 예약이 존재하는데, 그 시간을 삭제하려 할 때 예외처리
jminkkk Apr 30, 2024
0bf09ec
feat(ReservationService): 지나간 날짜와 시간에 대한 예약 생성은 불가능하다는 정책 반영
jminkkk Apr 30, 2024
3df73f6
feat(ReservationService): 중복 예약에 대한 예외처리
jminkkk Apr 30, 2024
a2a6a6e
feat(GlobalExceptionHandler): 예외 처리 시 응답을 위한 ControllerAdvice 구현
jminkkk May 1, 2024
7a4eea9
fix(ReservationService): 동일한 예약인지 체크하는 경우, 날짜와 시간만 체크하도록 변경
jminkkk May 1, 2024
6eecf8e
fix(ReservationRepository): save 시 저장한 Reservation 객체를 반환하도록 변경
jminkkk May 1, 2024
35e9de8
refactor(ReservationRepository): existsByDateAndTime 로 이름 변경 및 메서드 인자 변경
jminkkk May 1, 2024
063b784
fix(ReservationTimeRepository): save 시 저장한 ReservationTime 객체를 반환하도록 변경
jminkkk May 1, 2024
8c0119a
docs: 2단계 요구사항 분석 작성
jminkkk May 1, 2024
91ff6b2
chore(schema.sql): 테마 DDL 추가
jminkkk May 1, 2024
0a4155a
feat(ThemeController): 테마 도메인 추가 및 테마 조회 기능 구현
jminkkk May 1, 2024
c317e61
feat(ThemeController): 테마 추가 기능 구현
jminkkk May 1, 2024
cb08ac7
feat(ThemeController): 테마 삭제 기능 구현
jminkkk May 1, 2024
c120aed
feat(AdminController): 테마 관리 페이지 추가 및 방탈출 예약 페이지 변경
jminkkk May 1, 2024
6c63950
feat(Reservation): 예약 시 테마 기능 추가
jminkkk May 1, 2024
5298eef
docs: 3단계 요구사항 분석 및 API 명세 작성
jminkkk May 1, 2024
982bbc8
feat(UserController): 사용자 예약 페이지 조회 추가
jminkkk May 1, 2024
74e1ea6
feat(UserController): 인기 테마 페이지 조회 추가
jminkkk May 1, 2024
1bbd1e1
feat(ReservationController): 예약 가능 시간 조회 기능 구현
jminkkk May 1, 2024
63ad269
feat(user-reservation.js): 예약 가능한 시간 추가/변경하도록 js 파일 수정
jminkkk May 1, 2024
0eb9926
feat(ThemeController): 인기 테마 조회 기능을 추가
jminkkk May 1, 2024
0252530
refactor(/src): 메서드 순서를 CRUD 순으로 통일
jminkkk May 2, 2024
7119fa1
refactor(ReservationService): 메서드명 변경 및 TODO 제거
jminkkk May 2, 2024
6864941
chore(data.sql): 더미데이터 추가
jminkkk May 2, 2024
e88032e
test(ReservationControllerTest): 가능한 시간 목록 조회에 대한 컨트롤러 테스트 추가
jminkkk May 2, 2024
2d6b4d2
test(JdbcReservationRepositoryTest): 예약 레포지토리 테스트 추가
jminkkk May 2, 2024
c0d7e4d
test(ReservationServiceTest): 예약 생성 관련 서비스 계층 테스트 추가
jminkkk May 2, 2024
e6bc083
test(ReservationServiceTest): 예약 목록 조회, 단건 조회, 가능한 시간 조회 관련 서비스 계층 테스…
jminkkk May 2, 2024
e1e0917
test(ReservationTimeControllerTest): 예약 시간 삭제 시 이미 예약되어있다면 409를 반환하는 …
jminkkk May 2, 2024
917dbda
test(JdbcReservationTimeRepositoryTest): 추가한 더미데이터에 맞게 레포지토리 테스트 변경
jminkkk May 2, 2024
4ebf5ef
test(ReservationTimeServiceTest): 시간 삭제 시 실패 테스트 추가 및 추가한 더미데이터에 맞게 서…
jminkkk May 2, 2024
a5fb58b
fix(ThemeService): 테마 삭제 시 해당 테마를 사용 중인 예약이 존재하는지 검증
jminkkk May 2, 2024
7658243
test(ThemeControllerTest): 테마 컨트롤러 테스트 추가
jminkkk May 2, 2024
19393db
test(JdbcThemeRepositoryTest): 테마 레포지토리 테스트 추가
jminkkk May 2, 2024
3d51046
test(ThemeServiceTest): 테마 서비스 테스트 추가
jminkkk May 2, 2024
97006bb
test(RoomescapeApplicationTest): 통합 테스트 추가
jminkkk May 2, 2024
b0a423d
style(/src): 안 쓰는 import문 제거
jminkkk May 2, 2024
7e97607
style(/page): 렌더링 컨트롤러를 /page 패키지로 아래로 이동
jminkkk May 2, 2024
419cc1c
test(data.sql): 테마 더미데이터의 썸네일 값을 중복되지 않게 변경
jminkkk May 2, 2024
3bbb872
refactor(CreateReservationRequest): 불필요한 주석 제거 및 레코드의 현재 생성자를 컴팩트 생성자…
jminkkk May 2, 2024
5ae8615
refactor(CreateReservationTimeRequest): 불필요한 주석 제거 및 레코드의 현재 생성자를 컴팩트…
jminkkk May 2, 2024
0e26813
fix(JdbcReservationRepository): 조인으로 가져온 테마 이름을 별칭으로 지정
jminkkk May 2, 2024
c42c864
fix(ReservationService): 예약 시 다른 테마더라도 같은 시간, 날짜에 예약이 있을 경우 예약이 불가한 버…
jminkkk May 2, 2024
5cc351b
chore(build.gradle): spring-boot-starter-validation 의존성 추가
jminkkk May 3, 2024
ce4d8ab
feat(ReservationTime): 예약 시간이 주어진 시간보다 이전인지 확인하는 메서드 추가
jminkkk May 3, 2024
e21d2d1
feat(Reservation): 예약 날짜와 시간이 주어진 시간보다 이전인지 확인하는 메서드 추가
jminkkk May 3, 2024
11c4010
refactor(ReservationService): 예약 생성 시 지나간 날짜와 시간인지 검증하는 로직을 객체에게 질의하도…
jminkkk May 3, 2024
6163d4e
refactor(ReservationService): 공통 메서드 추출 및 검증 로직을 메서드로 추출
jminkkk May 3, 2024
00fe099
refactor(ReservationService): 메서드 순서 변경 및 데이터 존재 유무 검증을 find 가 아닌 exi…
jminkkk May 3, 2024
f148b6e
refactor(ReservationTimeService): 검증 메서드 추출 및 데이터 존재 유무 검증을 find 가 아닌…
jminkkk May 3, 2024
6fb7ef6
refactor(ThemeService): 데이터 존재 유무 검증을 find 가 아닌 exists를 통해 검증
jminkkk May 3, 2024
0f53684
fix(ReservationService): 예약 삭제 시 존재하는 예약인지를 판단하는 검증 로직 수정
jminkkk May 3, 2024
2a4b37a
refactor(TimeFormatConfiguration): Custom 포매터 대신 Jackson2ObjectMapper…
jminkkk May 3, 2024
6631285
fix(Reservation): 예약 날짜와 시간이 현재보다 과거인지 체크하는 로직 변경
jminkkk May 4, 2024
a30b5c9
feat(CreateReservationRequest): 예약 생성 시 요청 바디에 대한 검증 추가
jminkkk May 4, 2024
b657a36
test(ReservationControllerTest): 예약 삭제, 단건 조회 요청 실패에 대한 컨트롤러 응답 테스트 추가
jminkkk May 4, 2024
a5793e3
refactor(ReservationServiceTest): @Nest 사용하여 같은 메서드에 대한 테스트 묶음
jminkkk May 4, 2024
1736156
refactor(ReservationRepository): 사용하지 않는 findAllByTimeId(), findAllBy…
jminkkk May 4, 2024
1c160ff
refactor(ReservationTimeServiceTest): 예약 생성 및 삭제 실패 테스트 추가 및 @Nest 사용
jminkkk May 4, 2024
573361a
refactor(/service): 예외 메시지를 상세하게 변경
jminkkk May 4, 2024
b2ce8e2
refactor(ViewControllerConfiguration): 템플릿 파일 렌더링 컨트롤러 제거 및 WebMvcCon…
jminkkk May 4, 2024
5d9f532
feat(ThemeController): 예약 생성 시 요청 바디에 대한 검증 추가
jminkkk May 4, 2024
85ed3a3
feat(CreateReservationRequest): 예약 생성 시 null 값에 대한 검증 추가
jminkkk May 4, 2024
88634f1
feat(ReservationName): 예약자 명을 래핑한 객체 생성 및 검증 로직 추가
jminkkk May 4, 2024
909326e
feat(Reservation, ReservationTime, Theme): 객체 생성 시 검증 로직 추가
jminkkk May 4, 2024
a88fed1
test(JbdcRepository): 단건 조회 시 오직 1개의 값만 반환하도록 쿼리 수정
jminkkk May 4, 2024
417deb2
refactor: 정적 팩토리 메서드를 네이밍 컨벤션에 맞게 변경
jminkkk May 5, 2024
dd903c0
test(FakeRepository): Mock이 아닌 Fake 테스트를 위해 Reservation, ReservationT…
jminkkk May 5, 2024
7a4c7ff
fix: 정적 팩토리 메서드의 네이밍 변경에서 누락된 수정 파일 수정
jminkkk May 5, 2024
e457c0c
refactor(/test/fixture): 쉬운 테스트를 위한 객체별 픽스쳐 클래스 생성
jminkkk May 5, 2024
37f4c19
refactor(ReservationServiceTest): Repository를 Mocking이 아닌 Fake 객체를 사용…
jminkkk May 5, 2024
7b1839b
fix(ReservationTimeService): 방탈출 시간 생성 시 시작 시간이 이미 존재할 경우에 대한 검증 추가
jminkkk May 5, 2024
bd0e081
refactor(ReservationTimeServiceTest): Repository를 Mocking이 아닌 Fake 객체…
jminkkk May 5, 2024
ea7737b
refactor(ThemeServiceTest): Repository를 Mocking이 아닌 Fake 객체를 사용해 변경
jminkkk May 5, 2024
12168f6
refactor(JdbcReservationTimeRepositoryTest): @SpringBootTest를 @JdbcTe…
jminkkk May 5, 2024
2f8ef8c
refactor(ReservationTest): Fixture 제거
jminkkk May 5, 2024
8110bd4
refactor(JdbcThemeRepositoryTest): @SpringBootTest를 @JdbcTest로 변경 및
jminkkk May 5, 2024
32e3bce
refactor(JdbcReservationRepositoryTest): @SpringBootTest를 @JdbcTest로 변경
jminkkk May 5, 2024
6611432
chore(application-test.properties): 테스트 main의 data.sql이 실행되지 않도록 테스트의…
jminkkk May 5, 2024
81653b1
refactor(ReservationControllerTest): @SpringBootTest를 @WebMvcTest 변경
jminkkk May 5, 2024
932126c
refactor(ReservationTimeControllerTest): @SpringBootTest를 @WebMvcTest 변경
jminkkk May 5, 2024
1ad986f
refactor(ThemeControllerTest): @SpringBootTest를 @WebMvcTest 변경
jminkkk May 5, 2024
b0adc58
fix(/service, RoomescapeApplicationTest): 테스트 메서드 재활용 및 빈 충돌 해결
jminkkk May 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# 요구사항 분석

## 1단계

- [x] 시간 관리 API가 적절한 응답을 하도록 변경
- [x] 예약 관리 API가 적절한 응답을 하도록 변경
- [x] 발생할 수 있는 예외 상황에 대한 처리
- [x] 사용자에게 적절한 응답

### 예외 처리 예시
- [x] 시간 생성 시 시작 시간에 유효하지 않은 값이 입력되었을 때
- [x] 예약 생성 시 예약자명, 날짜, 시간에 유효하지 않은 값이 입력 되었을 때
- [x] 특정 시간에 대한 예약이 존재하는데, 그 시간을 삭제하려 할 때

### 서비스 정책 반영
- [x] 지나간 날짜와 시간에 대한 예약 생성은 불가능하다.
- [x] 중복 예약은 불가능하다.

## 2단계
- [x] 사용자 예약 시 지정할 테마 도메인 추가
- 모든 테마는 시작 시간과 소요 시간이 동일하다고 가정
- [x] 관리자 - 테마 관리 기능을 추가
- [x] 테마 조회 기능 구현
- [x] 테마 추가 기능 구현
- [x] 테마 삭제 기능 구현
- [x] `/admin/theme` 요청 시 `templates/admin/theme.html` 반환
- 관리자 - 저장된 예약의 테마 변경 기능 추가(예약 관리)
- [x] 방탈출 예약 페이지를 `templates/admin/reservation-new.html`로 변경
- [x] 예약 시 테마 기능 추가
- [x] ~~프론트 코드 변경 - 예약 목록 조회 API 호출 후 렌더링. response 명세에 맞춰 값 설정~~

## 3단계
- 사용자 - 예약 페이지
- [x] 사용자가 예약 가능한 시간 조회
- [x] 사용자가 예약 가능한 시간 추가/변경
- [x] `/reservation` 요청 시 `templates/reservation.html` 반환
- 인기 테마
- [x] `/` 요청 시 `templates/index.html` 반환
- [x] 인기 테마 조회 기능을 추가
- 최근 일주일을 기준으로 예약이 많은 테마 10개를 확인
- [x] [3단계] 주석을 검색하여 안내사항에 맞게 클라이언트 코드를 수정
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-validation'

runtimeOnly 'com.h2database:h2'

Expand Down
Loading