mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-14 14:11:20 +00:00
Iqbal Refactoring
This commit is contained in:
parent
3fe7774406
commit
e19a316b13
@ -13,10 +13,10 @@ class BaseItemUpdater:
|
|||||||
self.item.sell_in -= 1
|
self.item.sell_in -= 1
|
||||||
|
|
||||||
def update_quality(self):
|
def update_quality(self):
|
||||||
if self.item.quality > 0:
|
degrade = 1
|
||||||
self.item.quality -= 1
|
if self.item.sell_in < 0:
|
||||||
if self.item.sell_in < 0 and self.item.quality > 0:
|
degrade = 2
|
||||||
self.item.quality -= 1
|
self.item.quality = max(self.item.quality - degrade, 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -44,7 +44,19 @@ class BackstagePassUpdater(BaseItemUpdater):
|
|||||||
|
|
||||||
class SulfurasUpdater(BaseItemUpdater):
|
class SulfurasUpdater(BaseItemUpdater):
|
||||||
def update(self):
|
def update(self):
|
||||||
pass
|
print("Sulfuras has no change")
|
||||||
|
def update_quality(self):
|
||||||
|
print("Sulfuras has no change")
|
||||||
|
# pass
|
||||||
|
def update_sell_in(self):
|
||||||
|
print("Sulfuras has no change")
|
||||||
|
|
||||||
|
class ConjuredItemUpdater(BaseItemUpdater):
|
||||||
|
def update_quality(self):
|
||||||
|
degrade = 2
|
||||||
|
if self.item.sell_in < 0:
|
||||||
|
degrade *= 2
|
||||||
|
self.item.quality = max(self.item.quality - degrade, 0)
|
||||||
|
|
||||||
|
|
||||||
class ItemUpdaterFactory:
|
class ItemUpdaterFactory:
|
||||||
@ -52,10 +64,12 @@ class ItemUpdaterFactory:
|
|||||||
def get_updater(item):
|
def get_updater(item):
|
||||||
if item.name == "Aged Brie":
|
if item.name == "Aged Brie":
|
||||||
return AgedBrieUpdater(item)
|
return AgedBrieUpdater(item)
|
||||||
elif item.name == "Backstage passes":
|
elif item.name == "Backstage passes to a TAFKAL80ETC concert":
|
||||||
return BackstagePassUpdater(item)
|
return BackstagePassUpdater(item)
|
||||||
elif item.name == "Sulfuras":
|
elif item.name == "Sulfuras, Hand of Ragnaros":
|
||||||
return SulfurasUpdater(item)
|
return SulfurasUpdater(item)
|
||||||
|
elif item.name == "Conjured Mana Cake":
|
||||||
|
return ConjuredItemUpdater(item)
|
||||||
else:
|
else:
|
||||||
return BaseItemUpdater(item)
|
return BaseItemUpdater(item)
|
||||||
|
|
||||||
|
|||||||
@ -1,16 +1,51 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import unittest
|
# import unittest
|
||||||
|
|
||||||
from gilded_rose import Item, GildedRose
|
# from gilded_rose import Item, GildedRose
|
||||||
|
|
||||||
|
|
||||||
class GildedRoseTest(unittest.TestCase):
|
# class GildedRoseTest(unittest.TestCase):
|
||||||
def test_foo(self):
|
# def test_foo(self):
|
||||||
items = [Item("foo", 0, 0)]
|
# items = [Item("foo", 0, 0)]
|
||||||
gilded_rose = GildedRose(items)
|
# gilded_rose = GildedRose(items)
|
||||||
gilded_rose.update_quality()
|
# gilded_rose.update_quality()
|
||||||
self.assertEqual("foo", items[0].name)
|
# self.assertEqual("foo", items[0].name)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
# if __name__ == '__main__':
|
||||||
unittest.main()
|
# unittest.main()
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from gilded_rose import GildedRose
|
||||||
|
from items import Item
|
||||||
|
|
||||||
|
|
||||||
|
def test_regular_item_degrades():
|
||||||
|
items = [Item("foo", 10, 20)]
|
||||||
|
gilded_rose = GildedRose(items)
|
||||||
|
gilded_rose.update_quality()
|
||||||
|
assert items[0].quality == 19
|
||||||
|
assert items[0].sell_in == 9
|
||||||
|
|
||||||
|
|
||||||
|
def test_aged_brie_increases():
|
||||||
|
items = [Item("Aged Brie", 2, 0)]
|
||||||
|
gilded_rose = GildedRose(items)
|
||||||
|
gilded_rose.update_quality()
|
||||||
|
assert items[0].quality == 1
|
||||||
|
assert items[0].sell_in == 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_backstage_passes_increase():
|
||||||
|
items = [Item("Backstage passes", 11, 10)]
|
||||||
|
gilded_rose = GildedRose(items)
|
||||||
|
gilded_rose.update_quality()
|
||||||
|
assert items[0].quality == 11
|
||||||
|
|
||||||
|
|
||||||
|
def test_sulfuras_no_change():
|
||||||
|
items = [Item("Sulfuras", 0, 80)]
|
||||||
|
gilded_rose = GildedRose(items)
|
||||||
|
gilded_rose.update_quality()
|
||||||
|
assert items[0].quality == 80
|
||||||
|
assert items[0].sell_in == 0
|
||||||
|
|||||||
@ -17,7 +17,7 @@ if __name__ == "__main__":
|
|||||||
Item(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O
|
Item(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O
|
||||||
]
|
]
|
||||||
|
|
||||||
days = 2
|
days = 4
|
||||||
import sys
|
import sys
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
days = int(sys.argv[1]) + 1
|
days = int(sys.argv[1]) + 1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user