いま、ソフトウェア製品を扱う小さなECサイトを営んでいるとする。
(なお、本演習では顧客、消費税、税率、通貨、お釣り、在庫などの概念は扱わないものとする)
本演習は TDD を体験することを主眼としていますので、 プログラミングの速さを競っているのではない 点にご注意ください。 機能を粗く速く実装することよりも、テストを書いて動かすことによるフィードバックを受けながら、 リファクタリングを忘れずに着実に進めていくことが、本演習では重要です。
いま、以下のつの種類(category)のソフトウェア製品(product)を扱っている。
- ワードプロセッサ
- スプレッドシート
製品は名前(name)と価格(price)を持つ(今回は消費税を扱わないので、単純に価格と考えてください)。
例:
- ワードプロセッサ「MS Word」の価格は 18,800円
- ワードプロセッサ「一太郎」の価格は 20,000円
- スプレッドシート「MS Excel」の価格は 27,800円
- スプレッドシート「三四郎」の価格は 5,000円
現時点では1回にどれか1つの製品を1つのみ購入する契約(contract)ができるものとする(カートに一つしか入らない貧弱なECサイトのイメージ)。契約が成立(sign)した場合、
- ワードプロセッサは契約日(signed_on または signedDate)に直ちに売上(revenue)全額を収益認識(revenue recognition)する
- スプレッドシートは契約日に売上の2/3、30日後に1/3を収益認識する
なお、収益認識の総和は売上とかならず 完全一致 しなければならない。
例:
- 本日(2/1)「MS Word」が1つ売れる契約が成立したとき、2/1 に 18,800円収益認識される
- 本日(2/1)「MS Excel」が1つ売れる契約が成立したとき、2/1 に 18,534円、3/3 に9,266円収益認識される
- (「一太郎」、「三四郎」に関してもテストしてください)
--
作者 @twada
引用元 URL: https://gist.github.com/twada/856c37103ebd3d1fb973ba2c2654f9d6
この演習問題は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。
また、この演習問題は Martin Fowler の著作 『Patterns of Enterprise Application Architecture』 から着想を得ています。