Created
March 18, 2014 18:39
-
-
Save omarqureshi/9626553 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require './gilded_rose.rb' | |
require "rspec" | |
describe GildedRose do | |
before do | |
@gilded_rose = GildedRose.new | |
end | |
describe "Sulfuras, Hand of Ragnaros" do | |
before { @name = "Sulfuras, Hand of Ragnaros" } | |
it "should not update the quality of the hand of ragnaros" do | |
items = get_items(@gilded_rose) | |
old_item_quality = get_item(items, @name).quality | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
item_quality = get_item(items, @name).quality | |
old_item_quality.should == item_quality | |
end | |
it "should not change the sell in" do | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
get_item(items, @name).sell_in.should == 0 | |
end | |
end | |
describe "Dexterity Vest" do | |
before { @name = "+5 Dexterity Vest" } | |
it "should change the quality of the dexterity vest" do | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 19 | |
item.sell_in.should == 9 | |
end | |
it "should decrease quality by 10 after 10 days of not selling the dexterity vest" do | |
10.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 10 | |
item.sell_in.should == 0 | |
end | |
it "should decrease quality by 12 after 11 days of not selling the dexterity vest" do | |
items = get_items(@gilded_rose) | |
old_item_quality = get_item(items, @name).quality | |
11.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 8 | |
item.sell_in.should == -1 | |
end | |
it "should decrease quality to 0 after 20 days of not selling the dexterity vest" do | |
20.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 0 | |
item.sell_in.should == -10 | |
end | |
end | |
describe "Aged Brie" do | |
before { @name = "Aged Brie" } | |
it "should increase the quality of the aged brie after a day" do | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 1 | |
item.sell_in.should == 1 | |
end | |
it "should have quality of 4 after 3 days" do | |
3.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 4 | |
item.sell_in.should == -1 | |
end | |
it "should have quality of 50 after 30 days" do | |
30.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item_quality = get_item(items, @name).quality | |
item_quality.should == 50 | |
end | |
end | |
describe "Elixir of the Mongoose" do | |
before { @name = "Elixir of the Mongoose" } | |
it "should decrease the quality by 1 after a day" do | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 6 | |
item.sell_in.should == 4 | |
end | |
it "should have a quality of 0 after 6 days" do | |
6.times {@gilded_rose.update_quality} | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 0 | |
item.sell_in.should == -1 | |
end | |
it "should have a quality of 0 after 7 days" do | |
7.times {@gilded_rose.update_quality} | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 0 | |
item.sell_in.should == -2 | |
end | |
end | |
describe "Backstage passes" do | |
before { @name = "Backstage passes to a TAFKAL80ETC concert" } | |
it "should increase the quality to 21 after 1 day" do | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 21 | |
item.sell_in.should == 14 | |
end | |
it "should increase the quality to 27 after 6 days" do | |
6.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 27 | |
item.sell_in.should == 9 | |
end | |
it "should increase the quality to 27 after 11 days" do | |
11.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 38 | |
item.sell_in.should == 4 | |
end | |
it "should be worth 50 after 15 days" do | |
15.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 50 | |
item.sell_in.should == 0 | |
end | |
it "should be worthless after 16 days" do | |
16.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 0 | |
item.sell_in.should == -1 | |
end | |
end | |
describe "Conjured Mana Cake" do | |
before { @name = "Conjured Mana Cake" } | |
it "should decrease in quality by 2 after 1 day" do | |
@gilded_rose.update_quality | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 4 | |
item.sell_in.should == 2 | |
end | |
before { @name = "Conjured Mana Cake" } | |
it "should decrease in quality by 6 after 3 days" do | |
3.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 0 | |
item.sell_in.should == 0 | |
end | |
before { @name = "Conjured Mana Cake" } | |
it "should decrease in quality by 6 after 4 days" do | |
4.times { @gilded_rose.update_quality } | |
items = get_items(@gilded_rose) | |
item = get_item(items, @name) | |
item.quality.should == 0 | |
item.sell_in.should == -1 | |
end | |
end | |
private | |
def get_items(rose) | |
rose.instance_variable_get("@items") | |
end | |
def get_item(items, name) | |
items.detect { |i| i.name == name} | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment