update_normal_item method updates items without quality allowances if quality > 0

This commit is contained in:
ollie beney 2020-11-04 16:39:36 +00:00
parent 2b410aa50b
commit 27860ced34
2 changed files with 23 additions and 5 deletions

View File

@ -7,11 +7,11 @@ class GildedRose
def self.update_quality(items)
items.map do |item|
if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert"
if item.quality > 0
if item.name != "Sulfuras, Hand of Ragnaros"
item.quality = item.quality - 1
update_normal_quality(item)
end
end
else
if item.quality < 50
item.quality = item.quality + 1
@ -52,6 +52,10 @@ class GildedRose
end
items
end
def self.update_normal_quality(item)
item.quality -= 1 unless item.quality.zero?
end
end
class Item

View File

@ -2,6 +2,7 @@ require 'gilded_rose'
describe GildedRose do
let(:potato) { Item.new('potato', 15, 2)}
#let(:grain) {instance_double("item", name: "potato", :quality => 5)}
let(:sulfarus) { Item.new('Sulfuras, Hand of Ragnaros', 50, 80) }
describe "#update_quality" do
@ -84,10 +85,23 @@ let(:sulfarus) { Item.new('Sulfuras, Hand of Ragnaros', 50, 80) }
expect(items.first.quality).to eq 0
end
end
end
describe '#update_normal_quality' do
it 'updates the quality of a normal item' do
item_double = double :item, name: "potato", sellIn: 1, quality: 3
expect(item_double).to receive(:quality=).with(2)
GildedRose.update_normal_quality(item_double)
end
it 'does not update quality if quality == 0' do
item_double = double :item, name: "potato", sellIn: 1, quality: 0
expect(item_double).not_to receive(:quality=).with(-1)
GildedRose.update_normal_quality(item_double)
end
end
end