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

38 lines
965 B
Python

import pytest
from gilded_rose import Item
def test_item_decreases_quality_and_sell_in():
item = Item("foo", sell_in=10, quality=20)
item.daily_step()
assert item.sell_in == 9
assert item.quality == 19
def test_item_quality_never_negative():
item = Item("bar", sell_in=5, quality=0)
item.daily_step()
assert item.quality == 0
def test_item_degrades_twice_as_fast_after_sell_date():
item = Item("baz", sell_in=0, quality=10)
# After sell-in passes, degradation doubles
item.daily_step()
assert item.sell_in == -1
assert item.quality == 8
def test_item_quality_floor_boundary():
item = Item("qux", sell_in=1, quality=1)
item.daily_step()
assert item.quality == 0
item.daily_step() # now past sell date, but cannot drop below 0
assert item.quality == 0
def test_item_init_with_negative_quality_raises():
with pytest.raises(AssertionError):
Item("oops", sell_in=5, quality=-1)