From b3efa0025f7b579863a79984b0a2ed46686275c6 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 22 Aug 2014 20:46:17 +1200 Subject: [PATCH] * Refactor tests. --- spec/receipt_spec.rb | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/spec/receipt_spec.rb b/spec/receipt_spec.rb index 4805693..e8359fd 100644 --- a/spec/receipt_spec.rb +++ b/spec/receipt_spec.rb @@ -3,20 +3,29 @@ require "./lib/receipt" describe ShoppingCart::Receipt do - [:total, :tax].each do |method| - describe "##{method} returns sum of all items' ##{method}:" do - it "for one item" do - items = [ShoppingCart::Item.new(1, "book", 12.49)] - expect(ShoppingCart::Receipt.new(items).send(method)).to eq \ - items.map(&method).inject(:+) - end + let(:items) { [double(ShoppingCart::Item, :tax => 1, :total => 12.49)] } + let(:multiple_items) { + [double(ShoppingCart::Item, :tax => 1, :total => 12), + double(ShoppingCart::Item, :tax => 0.10, :total => 3)] + } - it "for multiple items" do - items = [ShoppingCart::Item.new(1, "book", 12.49), - ShoppingCart::Item.new(1, "chocolate bar", 0.85)] - expect(ShoppingCart::Receipt.new(items).send(method)).to eq \ - items.map(&method).inject(:+) - end + describe "#tax sums all items' #tax" do + it "for one item" do + expect(ShoppingCart::Receipt.new(items).tax).to eq 1 + end + + it "for multiple items" do + expect(ShoppingCart::Receipt.new(multiple_items).tax).to eq 1.10 + end + end + + describe "#total sums all items' #total" do + it "for one item" do + expect(ShoppingCart::Receipt.new(items).total).to eq 12.49 + end + + it "for multiple items" do + expect(ShoppingCart::Receipt.new(multiple_items).total).to eq 15 end end end