diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index 1c92f638..93e0dc09 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -1,16 +1,64 @@ -# -*- coding: utf-8 -*- -import unittest +from gilded_rose import GildedRose, Item -from gilded_rose import Item, GildedRose +class TestGildedRose: + # --- NORMAL ITEMS --- + def test_normal_item_quality_decreases_by_1_before_sell_date(self): + items = [Item("Normal Item", sell_in=10, quality=20)] + GildedRose(items).update_quality() + assert items[0].quality == 19 + assert items[0].sell_in == 9 + def test_normal_item_quality_decreases_by_2_after_sell_date(self): + items = [Item("Normal Item", sell_in=0, quality=20)] + GildedRose(items).update_quality() + assert items[0].quality == 18 -class GildedRoseTest(unittest.TestCase): - def test_foo(self): - items = [Item("foo", 0, 0)] - gilded_rose = GildedRose(items) - gilded_rose.update_quality() - self.assertEqual("fixme", items[0].name) + # --- AGED BRIE --- + def test_aged_brie_increases_quality_over_time(self): + items = [Item("Aged Brie", sell_in=5, quality=10)] + GildedRose(items).update_quality() + assert items[0].quality == 11 - -if __name__ == '__main__': - unittest.main() + def test_aged_brie_increases_quality_double_after_sell_in(self): + items = [Item("Aged Brie", sell_in=0, quality=10)] + GildedRose(items).update_quality() + assert items[0].quality == 12 + + # --- SULFURAS --- + def test_sulfuras_never_changes(self): + items = [Item("Sulfuras, Hand of Ragnaros", sell_in=5, quality=80)] + GildedRose(items).update_quality() + assert items[0].quality == 80 + assert items[0].sell_in == 5 + + def test_sulfuras_remains_80_after_sell_in(self): + items = [Item("Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80)] + GildedRose(items).update_quality() + assert items[0].quality == 80 + + # --- BACKSTAGE PASSES --- + def test_backstage_pass_increases_by_2_when_10_days_or_less(self): + items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=20)] + GildedRose(items).update_quality() + assert items[0].quality == 22 + + def test_backstage_pass_increases_by_3_when_5_days_or_less(self): + items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=20)] + GildedRose(items).update_quality() + assert items[0].quality == 23 + + def test_backstage_pass_quality_drops_to_zero_after_concert(self): + items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=0, quality=20)] + GildedRose(items).update_quality() + assert items[0].quality == 0 + + # --- LÍMITES (EDGE CASES) --- + def test_quality_never_goes_below_zero(self): + items = [Item("Normal Item", sell_in=5, quality=0)] + GildedRose(items).update_quality() + assert items[0].quality == 0 + + def test_quality_never_exceeds_50(self): + items = [Item("Aged Brie", sell_in=5, quality=50)] + GildedRose(items).update_quality() + assert items[0].quality == 50 \ No newline at end of file