BasicDiscountPolicy - 쿠폰

dongdong·2023년 1월 11일
0

공부프로젝트

목록 보기
8/9

Coupon

요구사항
1. 쿠폰의 할인 타입은 고정금액, %할인 두가지
2. 하나의 주문에 쿠폰은 한개만 사용가능
3. 기간이 지난 쿠폰은 사용할 수 없다.
4. 같은 쿠폰을 여러번 발급 받을 수 없다.

  • 쿠폰 할인 타입
    Enum CouponType을 만들었다.
    type이 PERCENT 일경우 주문아이템의 전체 금액에서 퍼센트 할인이 적용되고
    FIXED 일 경우 전체 금액에서 고정 금액을 할인해서 return 한다.

  • 하나의 쿠폰사용 && 기간이 지났을 때
    빨간 박스는 테스트에 필요한 데이터를 넣어주는 작업 coupon데이터는 쿠폰 만료일을 의도적으로 -100일 해서 사용 가능 일자가 지나도록 만들고, orderCoupon()을 호출할때 하나의 couponId를 넣고 내부에서 만료일이 지났을 경우 IllegalStateException을 발생 시킨다.

테스트 통과

정상 쿠폰 테스트

빨간 박스는 테스트에 필요한 데이터를 넣어주는 작업
item 2개의 총가격은 30,000원이고 20,000원 할인 쿠폰을 사용했으므로 orderPrice는 10,000원이어야 한다.

테스트 통과

실제 테스트

총 상품금액은 110,000원이고 10프로 할인 쿠폰을 사용하여
할인 금액 11,000원이 잘 찍힌다.

profile
공부하고 기록하기~

0개의 댓글