-
Notifications
You must be signed in to change notification settings - Fork 185
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
3단계 - 테스트를 통한 코드 보호 #264
base: dacapolife87
Are you sure you want to change the base?
3단계 - 테스트를 통한 코드 보호 #264
Changes from 6 commits
175e14c
dc83dcb
39bc073
0a03f8f
7b9c31c
e3ae3e5
a06859d
21f4541
4d778ba
1da68c1
76fc081
56b4bc5
b8eda57
b218919
6d5a66d
d8611e3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -8,79 +8,74 @@ | |||||
|
||||||
- 간단한 식당 포스기기를 구현한다. | ||||||
|
||||||
- 메뉴그룹 | ||||||
- [ ] 메뉴들이 속해있는 메뉴 그룹이 존재한다. | ||||||
- [ ] 메뉴 그룹은 생성할수 있어야한다. | ||||||
- [ ] 메뉴의 이름이 올바르지 않으면 생성할 수 없다. | ||||||
- [ ] 메뉴 그룹을 조회할수 있어야한다. | ||||||
- 메뉴그룹 | ||||||
- [X] 메뉴들이 속해 있는 메뉴 그룹이 존재한다. | ||||||
- [X] 사용자는 메뉴그룹을 생성할수 있다. | ||||||
- [X] 메뉴그룹 생성시 공백이 아닌 이름을 지정해야한다. | ||||||
- [X] 메뉴그룹의 목록을 조회할 수 있다. | ||||||
|
||||||
- 메뉴 | ||||||
- [ ] 메뉴그룹에 속한 메뉴들이 존재한다. | ||||||
- [ ] 메뉴는 상품과 수량의 구성으로 되어있다. | ||||||
- [ ] 메뉴의 가격은 메뉴에 속한 상품들의 총합 가격보다 클수는 없다. | ||||||
- [ ] 메뉴의 이름에는 비속어를 사용할수 없다. | ||||||
- [ ] 메뉴 생성시 메뉴를 바로 노출되도록 할수도 있으며 선택에따라 비노출상태로 메뉴등록을 할수도있다. | ||||||
- [ ] 등록된 상품과 등록된 메뉴그룹을 통하여 메뉴를 생성할수가 있다. | ||||||
- [ ] 메뉴의 이름이 올바르지 않으면 생성할 수 없다. | ||||||
- [ ] 메뉴의 가격이 올바르지 않으면 생성할 수 없다. | ||||||
- [ ] 메뉴생성시 상품의 리스트를 입력받아야한다. | ||||||
- [ ] 상품 리스트에는 상품 아이디와 수량을 지정해야한다. | ||||||
- [ ] 메뉴는 수정이 가능해야한다. | ||||||
- [ ] 메뉴수정시 가격이 올바르지 않으면 수정할 수 없다. | ||||||
- [ ] 메뉴에 속한 상품들의 총합가격보다 메뉴의 가격이 클수는없다. | ||||||
- [ ] 메뉴는 노출과 비노출 상태가 있으며 상태는 변경 할수가 있다. | ||||||
- [ ] 메뉴 상태를 비노출상태로 변경할수 있다. | ||||||
- [ ] 메뉴 상태를 노출상태로 변경할수 있다. 이때 조건은 다음과 같다. | ||||||
- [ ] 메뉴의 가격이 메뉴에 속한 상품들의 가격총합보다 크면 노출상태로 변경할수 없다. | ||||||
- [ ] 등록된 메뉴의 목록을 조회할수 있어야한다. | ||||||
|
||||||
- 주문 테이블 | ||||||
- [ ] 주문 테이블은 이름이 있으며 손님수와 테이블 상태를 가지고 있다. | ||||||
- [ ] 주문 테이블을 생성하면 처음에는 빈테이블이며 손님수는 0명으로 설정되어 있다. | ||||||
- [ ] 매장 테이블은 이름을 등록하여 관리할수있다. | ||||||
- [ ] 테이블 이름이 올바르지 않으면 생성할수 없다. | ||||||
- [ ] 테이블의 상태는 빈테이블과 착석의 상태가 존재한다. | ||||||
- [ ] 테이블의 상태를 착석으로 변경할수 있다. | ||||||
- [ ] 테이블의 상태를 빈 테이블로 변경할수 있다. 이때 조건은 다음과 같다. | ||||||
- [ ] 주문이 완료되지 않으면 빈 테이블로 변경할 수 없다. | ||||||
- [ ] 착석할 경우 손님이 몇명인지 등록해야한다. | ||||||
- [ ] 변경하려는 손님수는 0보다 작을수 없다. | ||||||
- [ ] 빈테이블은 손님수를 변경할수 없다. | ||||||
- [ ] 전체 테이블의 목록을 조회할수 있어야한다. | ||||||
- [X] 사용자는 메뉴를 등록할 수 있다. | ||||||
- [X] 메뉴의 가격은 0원 이상이여야한다. | ||||||
- [X] 메뉴 등록시 1개 이상의 상품이 포함되어야 한다. | ||||||
- [X] 메뉴에 포함되는 각 상품은 0개 이상 포함되어야한다. | ||||||
- [X] 등록하려는 메뉴의 가격은 메뉴에 포함되는 상품의 총 가격보다 비싸면안된다. | ||||||
- [X] 메뉴의 이름은 필수이고 비속어는 사용할 수 없다. | ||||||
- [X] 사용자는 등록된 메뉴의 가격을 수정 할 수 있다. | ||||||
- [X] 메뉴의 가격은 0원 이상이여야 한다. | ||||||
- [X] 수정하려는 가격은 메뉴에 포함된 상품의 총 가격보다 비싸면안된다. | ||||||
- [X] 사용자는 메뉴를 노출 상태로 변경할 수 있다. | ||||||
- [X] 메뉴에 포함된 상품의 총 가격보다 메뉴의 가격이 비쌀경우 노출상태로 변경할 수 없다. | ||||||
- [X] 사용자는 메뉴를 비노출 상태로 변경할 수 있다. | ||||||
- [X] 메뉴의 목록을 조회할 수 있다. | ||||||
|
||||||
- 주문테이블 | ||||||
- [X] 사용자는 주문 테이블을 등록할 수 있다. | ||||||
- [X] 주문테이블의 이름은 필수로 지정해야한다. | ||||||
- [X] 주문테이블 생성시 손님수는 0명에 빈테이블로 설정된다. | ||||||
- [X] 주문테이블의 상태를 착성으로 변경 할 수 있다. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 오타 발견!
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 오타 수정하였습니다 ^^;;; |
||||||
- [X] 주문테이블의 상태를 빈테이블로 변경 할 수 있다. | ||||||
- [X] 해당 테이블에 완료되지 않은 주문이 존재하면 빈테이블로 변경 할 수 없다. | ||||||
- [X] 테이블의 착석 사람수를 변경할 수 있다. | ||||||
- [X] 사람수는 0명 이상이여야한다. | ||||||
- [X] 빈테이블은 사람수를 변경할 수 없다. | ||||||
- [X] 테이블의 목록을 조회 할수 있다. | ||||||
|
||||||
- 주문 | ||||||
- [ ] 주문타입은 식사/포장/배달이 존재한다. | ||||||
- [ ] 주문하는 기능이있다. | ||||||
- [ ] 주문을 하게되면 해당 주문은 대기상태로 등록된다. | ||||||
- [ ] 요청된 주문이 매장식사일 경우 주문한 테이블의 ID정보가 있어야한다. | ||||||
- [ ] 배달주문일 경우 배송지 주소가 있어야한다. | ||||||
- [ ] 주문은 주문하려는 상품의 리스트를 받는다. | ||||||
- [ ] 포장, 배달주문일 경우 수량이 0보다 작을수는 없다. | ||||||
- [ ] 주문 상품은 메뉴와 가격, 수량이 존재한다. | ||||||
- [ ] 상품의 상태가 미노출일 경우 주문이 불가능하다. | ||||||
- [ ] 메뉴의 가격과 접수된 주문의 메뉴 가격이 같아야한다. | ||||||
- [ ] 주문이 등록되면 주문을 확인할수 있다. | ||||||
- [ ] 접수요청시 라이더클라이언트에 배달요청을 한다. | ||||||
- [ ] 주문의 상태는 대기/접수/서빙/배달시작/배달완료/주문완료 의 상태를 가진다. | ||||||
- [ ] 준비중인 주문의 상태를 접수로 변경한다. | ||||||
- [ ] 접수된 주문의 상태를 서빙으로 변경한다. | ||||||
- [ ] 배달주문이면서 서빙상태가 아닌 주문의 상태를 배달시작으로 변경한다. | ||||||
- [ ] 배달중인 주문의 상태를 배달완료로 변경한다. | ||||||
- [ ] 주문의 상태를 주문완료로 변경한다. 이때 조건은 다음과 같다. | ||||||
- [ ] 배달주문일 경우 배달이 완료된 상태일때 | ||||||
- [ ] 포장 또는 매장식사 일경우 서빙이 된 상태일때 | ||||||
- [ ] 주문완료로 상태를 변경할 때 매장 식사일 경우 해당 테이블의 모든 주문이 완료되면 테이블을 정리할 수 있다. | ||||||
- [ ] 요청 주문의 목록을 조회할수 있어야한다. | ||||||
- [X] 주문의 타입은 매장식사/포장/배달이 있다. | ||||||
- [X] 고객은 주문을 생성할수 있다. | ||||||
- [X] 주문의 타입은 필수이다. | ||||||
- [X] 주문 하려는 상품은 1개 이상 존재해야한다. | ||||||
- [X] 매장식사가 아닐 경우 주문하려는 상품은 0개 이상주문해야한다. | ||||||
- [X] 비노출된 메뉴는 주문할 수 없다. | ||||||
- [X] 주문생성을 하면 처음상태는 대기 상태로 된다. | ||||||
- [X] 배달주문일 경우 배달지 주소는 필수이다. | ||||||
- [X] 매장식사일 경우 테이블에 착성후 가능하다. | ||||||
- [X] 주문의 상태는 대기/접수/서빙/배달시작/배달완료/주문완료 의 상태가 존재한다. | ||||||
- [X] 주문을 접수한다. | ||||||
- [X] 주문의 상태를 접수로 변경하는것은 대기 상태 일 경우만 가능하다. | ||||||
- [X] 주문을 서빙한다. | ||||||
- [X] 서빙상태로 변경하는것은 접수된 주문만 가능하다. | ||||||
- [X] 주문을 배달한다. | ||||||
- [X] 주문 타입이 배달인것만 배달상태로 변경가능하다. | ||||||
- [X] 배달상태로 변경하는것은 서빙상태의 주문만 가능하다. | ||||||
- [X] 주문을 배달완료로 변경한다. | ||||||
- [X] 배달중인 주문만 배달완료로 변경이 가능하다. | ||||||
- [X] 주문의 상태로 완료 변경한다. | ||||||
- [X] 주문타입이 배달일 경우 배달이 완료된 주문만 완료처리할수 있다. | ||||||
- [X] 포장이나 매장식사의 경우 서빙상태만 완료처리 할수 있다. | ||||||
- [X] 모든 주문이 완료된 테이블은 주문완료시 빈테이블로 변경한다. | ||||||
- [X] 주문의 목록을 볼수 있다. | ||||||
|
||||||
- 상품 | ||||||
- [ ] 상품을 등록한다. | ||||||
- [ ] 상품의 이름이 올바르지 않으면 생성할 수 없다. | ||||||
- [ ] 상품의 가격이 올바르지 않으면 생성할 수 없다. | ||||||
- [ ] 등록된 상품은 수정이 가능해야한다. | ||||||
- [ ] 상품의 가격이 올바르지 않으면 수정할 수 없다. | ||||||
- [ ] 상품의 가격을 수정할때 이미 메뉴로 등록된 상품이 있을경우 메뉴의 가격보다 상품의 총 가격이 클경우 메뉴의 노출상태를 미노출로 변경해야한다, | ||||||
- [ ] 등록된 상품목록을 조회한다. | ||||||
|
||||||
- [X] 사용자는 상품을 등록할 수 있다. | ||||||
- [X] 상품의 가격은 0원 이상이여야 한다. | ||||||
- [X] 상품의 이름은 필수이고 비속어가 될수 없다. | ||||||
- [X] 사용자는 등록된 상품의 가격을 변경 할 수 있다. | ||||||
- [X] 상품의 가격은 0원 이상이여야 한다. | ||||||
- [X] 상품이 등록된 메뉴의 가격이 메뉴에 포함된 상품들의 총 가격보다 비싸면 메뉴는 비노출 처리한다. | ||||||
- [X] 사용자는 등록된 상품의 목록을 조회 할 수 있다. | ||||||
|
||||||
## 용어 사전 | ||||||
|
||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,19 @@ | |
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.UUID; | ||
|
||
public interface MenuGroupRepository extends JpaRepository<MenuGroup, UUID> { | ||
public interface MenuGroupRepository { | ||
MenuGroup save(MenuGroup menuGroup); | ||
|
||
List<MenuGroup> findAll(); | ||
|
||
Optional<MenuGroup> findById(UUID id); | ||
|
||
} | ||
|
||
interface JpaMenuGroupRepository extends MenuGroupRepository, JpaRepository<MenuGroup, UUID> { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래의 Google Java Style Guide를 참고해 주세요.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 기본적인건데 이부분을 분리를 안했었네요 |
||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,11 +5,23 @@ | |
import org.springframework.data.repository.query.Param; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.UUID; | ||
|
||
public interface MenuRepository extends JpaRepository<Menu, UUID> { | ||
public interface MenuRepository { | ||
List<Menu> findAllByIdIn(List<UUID> ids); | ||
|
||
@Query("select m from Menu m, MenuProduct mp where mp.product.id = :productId") | ||
List<Menu> findAllByProductId(@Param("productId") UUID productId); | ||
|
||
Menu save(Menu menu); | ||
|
||
Optional<Menu> findById(UUID menuId); | ||
|
||
List<Menu> findAll(); | ||
|
||
void deleteDataForTest(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 테스트를 위한 메서드는 과감하게 지우는 것이 좋겠어요. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 부분을 하면서도 과연 이게 맞는건가하는 의문이 많이 들었습니다. |
||
} | ||
|
||
interface JpaMenuRepository extends MenuRepository, JpaRepository<Menu, UUID> { | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오타 발견!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오타 수정하였습니다 ^^;;;