diff --git a/python/gilded_rose.py b/python/gilded_rose.py index f56d286b..2ba71faa 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -85,3 +85,15 @@ class BackstagePassUpdater(ItemUpdater): self.item.quality = min(50, self.item.quality + 1) # More than 10 days: +1 self.item.sell_in = self.item.sell_in - 1 + +@ItemUpdater.register("Conjured") +class ConjuredItemUpdater(ItemUpdater): + + def update(self): + self.item.sell_in = self.item.sell_in - 1 + + if self.item.quality > 0: + self.item.quality = self.item.quality - 2 + + if self.item.sell_in < 0 and self.item.quality > 0: + self.item.quality = self.item.quality - 2 \ No newline at end of file diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index 21ac3a92..52ef3197 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -101,5 +101,28 @@ class GildedRoseBackstagePassTest(unittest.TestCase): self.assertEqual(0, items[0].quality) self.assertEqual(-1, items[0].sell_in) +class GildedRoseConjuredItemTest(unittest.TestCase): + + def test_item_quality(self): + items = [Item("Conjured", 20, 40)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEqual(38, items[0].quality) + self.assertEqual(19, items[0].sell_in) + + def test_item_quality_sell_in_passed(self): + items = [Item("Conjured", 0, 40)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEqual(36, items[0].quality) + self.assertEqual(-1, items[0].sell_in) + + def test_item_quality_sell_can_be_negative(self): + items = [Item("Conjured", 20, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEqual(0, items[0].quality) + self.assertEqual(19, items[0].sell_in) + if __name__ == '__main__': unittest.main()