GithubHelp home page GithubHelp logo

jwp-refactoring's Introduction

키친포스

요구 사항

  • kitchenpos 패키지의 코드를 보고 키친포스의 요구 사항을 README.md에 작성한다.
  • 정리한 키친포스의 요구 사항을 토대로 테스트 코드를 작성한다. 모든 Business Object에 대한 테스트 코드를 작성한다.

MenuGroup

설명
구성 id, 이름
POST /api/menu-groups 메뉴 그룹을 생성한다.
GET /api/menu-groups 모든 메뉴 그룹을 조회한다.

Menu

설명
구성 id, 이름, 가격, 메뉴 그룹 id, 메뉴 상품들
POST /api/menus 메뉴를 생성한다.
GET /api/menus 모든 메뉴를 조회한다.

🚨 예외 상황

  • 메뉴를 생성할 때
    • 가격은 빈 값일 수 없다.
    • 가격은 0원 이하일 수 없다.
    • 존재하지 않는 메뉴 그룹으로 메뉴를 생성할 수 없다.
    • 존재하지 않는 상품으로 메뉴를 생성할 수 없다.
    • 메뉴 가격이 메뉴 상품들의 가격합보다 크거나 같을 수 없다.

Order

설명
구성 id, 주문 테이블 Id, 주문 상태, 주문 시간, 주문 항목들
POST /api/orders 주문를 생성한다.
GET /api/orders 모든 주문을 조회한다.
PUT /api/orders/{orderId}/order-status 주문의 상태를 변경한다.

🚨 예외 상황

  • 주문를 생성할 때
    • 주문 항목이 비어있을 수 없다.
    • 존재하지 않는 주문 항목으로 주문을 생성할 수 없다.
    • 존재하지 않는 주문 테이블로 주문을 생성할 수 없다.
    • 주문 테이블로 비어있는 상태로 주문을 생성할 수 없다.
  • 주문의 상태 변경할 때
    • 존재하지 않는 주문은 변경할 수 없다.
    • 주문의 상태가 이미 완료된 상황에서는 변경할 수 없다.

Product

설명
구성 id, 이름, 가격
POST /api/products 상품를 생성한다.
GET /api/products 모든 상품을 조회한다.

🚨 예외 상황

  • 상품를 생성할 때
    • 가격을 빈 값으로 상품을 생성할 수 없다.
    • 가격이 0원보다 작으면 상품을 생성할 수 없다.

TableGroup

설명
구성 id, 생성된 시간, 주문 테이블들
POST /api/table-groups 단체를 지정한다.
DELETE /api/table-groups 지정된 단체를 해제한다.

🚨 예외 상황

  • 단체를 지정할 때
    • 주문 테이블이 null 이라면 단체를 지정할 수 없다.
    • 주문 테이블이 1개 이하이면 단체를 지정할 수 없다.
    • 존재하지 않는 주문 테이블에 대해서 단체를 지정할 수 없다.
    • 비어있는 주문 테이블에는 단체를 지정할 수 없다.
    • 이미 단체로 지정된 주문 테이블에 대해서 단체를 지정할 수 없다.
  • 단체를 해제할 때
    • 주문의 상태가 Cooking, Meal인 경우 단체를 해제할 수 없다.

Table

설명
구성 id, 단체 그룹 id, 방문한 손님 수, 주문을 등록할 수 있는지 여부
POST /api/tables 테이블을 생성한다.
GET /api/tables 모든 테이블을 조회한다.
PUT /api/tables/{orderTableId}/empty 주문을 등록할 수 있는 테이블로 변경한다.
PUT /api/tables/{orderTableId}/number-of-guests 테이블의 앉은 손님의 숫자를 변경한다.

🚨 예외 상황

  • 주문을 등록할 수 있는 상태로 변경할 때
    • 주문 테이블이 존재하지 않으면 변경할 수 없다.
    • 주문 테이블이 단체로 지정되어 있다면 변경할 수 없다.
    • 주문의 상태가 Cooking, meal인 경우 변경할 수 없다.
  • 테이블에 앉은 손님의 숫자를 변경할 때
    • 변경하려는 손님의 숫자가 음수이면 변경할 수 없다.
    • 변경하려는 주문 테이블이 존재하지 않으면 변경할 수 없다.
    • 변경하려는 주문 테이블이 비어있다면 변경할 수 없다.

용어 사전

한글명 영문명 설명
상품 product 메뉴를 관리하는 기준이 되는 데이터
메뉴 그룹 menu group 메뉴 묶음, 분류
메뉴 menu 메뉴 그룹에 속하는 실제 주문 가능 단위
메뉴 상품 menu product 메뉴에 속하는 수량이 있는 상품
금액 amount 가격 * 수량
주문 테이블 order table 매장에서 주문이 발생하는 영역
빈 테이블 empty table 주문을 등록할 수 없는 주문 테이블
주문 order 매장에서 발생하는 주문
주문 상태 order status 주문은 조리 ➜ 식사 ➜ 계산 완료 순서로 진행된다.
방문한 손님 수 number of guests 필수 사항은 아니며 주문은 0명으로 등록할 수 있다.
단체 지정 table group 통합 계산을 위해 개별 주문 테이블을 그룹화하는 기능
주문 항목 order line item 주문에 속하는 수량이 있는 메뉴
매장 식사 eat in 포장하지 않고 매장에서 식사하는 것

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.