/videoshop

spock explanation example project

Primary LanguageJava

videoshop

도메인 규칙

1.비디오가게 주인은 손님들이 빌려간 비디오들의 총 가격을 계산하고 싶어한다.

* 총 가격은 비디오가격을 모두 합한 금액에 할인금액을 차감해서 계산한다.
* 할인의 종류는 회원별 등급과 요일/시간별 타임, 비디오의 출시일등이 있다
* 회원은 골드, 실버, 일반등급으로 나뉘고, 등급별로 각각 총 비디오가격의 10%, 5%, 0%의 할인을 받는다.
* 비디오가게 주인은 특별히 매주 월요일 아침 10시, 토/일요일 저녁 6시부터 1시간동안 각각 총 비디오가격의 3%, 5%를 할인해준다.
* 비디오가게 주인은 출시일이 더 오래된 비디오일수록 대여를 촉진하기 위해, 각 비디오가격의 1년 이상된 것은 3%, 3년이상은 5%, 5년 이상은 8%의 할인을 해준다.

2.비디오가게 주인은 손님들이 빌려간 비디오의 연체가격을 계산하고 싶어한다.

* 반납일로부터 하루가 지나면 총 비디오가격의 5%, 일주일 이상 지나면 10%, 한달 이상 지나면 30%의 연체료를 물린다

3.비디오가게 주인은 손님들의 등급을 자동으로 업데이트 하고 싶다.

* 회원은 첫 가입 후, 3년이 지나거나 혹은 10번 이상 대여한 내역이 있다면, 실버등급으로 올라간다.
* 회원은 첫 가입 후, 5년이 지나거나 혹은 20번 이상 대여한 내역이 있다면, 골드등급으로 올라간다.
* 회원은 첫 가입 후 2년이상 지나도록 대여내역이 없다면, 자동탈퇴된다.

4.비디오가게 주인은 상시로 신규로 나온 비디오를 확인하고 싶다.

* 신규 비디오 정보는 비디오 퍼블리셔(publisher)가 제공하기로 했다.
* 비디오 퍼블리셔는 아직 제공할 신규비디오 정보에 대한 구현을 하지 못했다.
* 대신 아래와 같은 인터페이스 명세를 정의했다.
  요청시 옵션 파라미터로 기간을 줘서 해당 기간 이후의 신규비디오 리스트를 가져올 수 있고, 형식은 yyyyMM(ex: 201709)이다.
* 신규비디오 리스트 요청은 관리자 아이디만 할 수 있다.

Spock Documentation

http://spockframework.org/spock/docs/1.1/index.html

Other Spock Example Project

  1. 숫자야구게임 : https://github.com/bluepoet/baseballgame-tdd-exercise
  2. 초간단 spock-dbunit CRUD : https://github.com/bluepoet/spock-dbunit-exercise
  3. ddd-start 테스트코드 groovy+spock으로 포팅 : https://github.com/bluepoet/ddd-repeat-start
  4. 영화예매시스템 junit/spock 테스트코드 비교 : https://github.com/bluepoet/MovieReservationSystem