mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Test covering of update_item function
This commit is contained in:
parent
7a043f63fb
commit
a379eadb37
@ -1,6 +1,101 @@
|
||||
defmodule GildedRoseTest do
|
||||
use ExUnit.Case
|
||||
import GildedRose
|
||||
|
||||
test "begin the journey of refactoring" do
|
||||
test "Items Quality decreases by 1" do
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: 9, quality: 3},
|
||||
%Item{name: "Item name", sell_in: 8, quality: 2}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: 1, quality: 7},
|
||||
%Item{name: "Item name", sell_in: 0, quality: 6}
|
||||
)
|
||||
end
|
||||
|
||||
test "Once the sell by date has passed, Quality degrades twice as fast" do
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: 0, quality: 5},
|
||||
%Item{name: "Item name", sell_in: -1, quality: 3}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: -1, quality: 8},
|
||||
%Item{name: "Item name", sell_in: -2, quality: 6}
|
||||
)
|
||||
end
|
||||
|
||||
test "The Quality of an item is never negative" do
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: 4, quality: 0},
|
||||
%Item{name: "Item name", sell_in: 3, quality: 0}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: 0, quality: 0},
|
||||
%Item{name: "Item name", sell_in: -1, quality: 0}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Item name", sell_in: -2, quality: 0},
|
||||
%Item{name: "Item name", sell_in: -3, quality: 0}
|
||||
)
|
||||
end
|
||||
|
||||
test "Aged Brie actually increases in Quality the older it gets" do
|
||||
assert_update_item(
|
||||
%Item{name: "Aged Brie", sell_in: 12, quality: 8},
|
||||
%Item{name: "Aged Brie", sell_in: 11, quality: 9}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Aged Brie", sell_in: 4, quality: 6},
|
||||
%Item{name: "Aged Brie", sell_in: 3, quality: 7}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Aged Brie", sell_in: 1, quality: 10},
|
||||
%Item{name: "Aged Brie", sell_in: 0, quality: 11}
|
||||
)
|
||||
end
|
||||
|
||||
test "[DISCOVERED] Quality of Aged Brie increases by 2 once the sell by date has passed" do
|
||||
assert_update_item(
|
||||
%Item{name: "Aged Brie", sell_in: 0, quality: 7},
|
||||
%Item{name: "Aged Brie", sell_in: -1, quality: 9}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Aged Brie", sell_in: -2, quality: 9},
|
||||
%Item{name: "Aged Brie", sell_in: -3, quality: 11}
|
||||
)
|
||||
end
|
||||
|
||||
test "The Quality of an item is never more than 50" do
|
||||
assert_update_item(
|
||||
%Item{name: "Aged Brie", sell_in: 7, quality: 50},
|
||||
%Item{name: "Aged Brie", sell_in: 6, quality: 50}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 9, quality: 50},
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 8, quality: 50}
|
||||
)
|
||||
end
|
||||
|
||||
test "Quality of backstage passes increases by 2 when there are 10 days or less" do
|
||||
assert_update_item(
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 9, quality: 1},
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 8, quality: 3}
|
||||
)
|
||||
end
|
||||
|
||||
test "Quality of backstag drops to 0 after the concert" do
|
||||
assert_update_item(
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 0, quality: 12},
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: -1, quality: 0}
|
||||
)
|
||||
assert_update_item(
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: -2, quality: 10},
|
||||
%Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: -3, quality: 0}
|
||||
)
|
||||
end
|
||||
|
||||
defp assert_update_item(item, expected) do
|
||||
assert update_item(item) == expected
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user