GildedRose-Refactoring-Kata/python/tests/test_gilded_rose_integration.py
2025-09-17 14:44:30 +03:30

65 lines
2.0 KiB
Python

from gilded_rose import Item, GildedRose, AgedBrie, BackstagePasses, Sulfuras, Conjured
def test_gilded_rose_updates_normal_item():
items = [Item("Normal", sell_in=2, quality=5)]
gr = GildedRose(items)
gr.update_quality()
assert items[0].sell_in == 1
assert items[0].quality == 4
def test_gilded_rose_updates_aged_brie():
items = [Item("Aged Brie", sell_in=2, quality=0)]
gr = GildedRose(items)
gr.update_quality()
assert isinstance(items[0], AgedBrie)
assert items[0].sell_in == 1
assert items[0].quality == 1
def test_gilded_rose_updates_backstage_passes_near_concert():
items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=10)]
gr = GildedRose(items)
gr.update_quality()
assert isinstance(items[0], BackstagePasses)
assert items[0].sell_in == 4
assert items[0].quality == 13
def test_gilded_rose_keeps_sulfuras_constant():
items = [Item("Sulfuras, Hand of Ragnaros", sell_in=10, quality=80)]
gr = GildedRose(items)
gr.update_quality()
assert isinstance(items[0], Sulfuras)
assert items[0].sell_in == 0
assert items[0].quality == 80
def test_gilded_rose_updates_mixed_items():
items = [
Item("Normal", sell_in=1, quality=2),
Item("Aged Brie", sell_in=1, quality=49),
Item("Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=48),
Item("Conjured Mana Cake", sell_in=3, quality=6),
Item("Sulfuras, Hand of Ragnaros", sell_in=0, quality=80),
]
gr = GildedRose(items)
gr.update_quality()
# Normal
assert items[0].sell_in == 0 and items[0].quality == 1
# Aged Brie capped at 50
assert items[1].sell_in == 0 and items[1].quality == 50
# Backstage +2 at 10 days, capped at 50
assert items[2].sell_in == 9 and items[2].quality == 50
# Conjured -2
assert isinstance(items[3], Conjured)
assert items[3].sell_in == 2 and items[3].quality == 4
# Sulfuras constant
assert items[4].sell_in == 0 and items[4].quality == 80