mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-04 09:11:39 +00:00
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import pytest
|
|
|
|
from gilded_rose import Item, Sulfuras
|
|
|
|
|
|
def test_sulfuras_is_immutable_over_time():
|
|
item = Item("Sulfuras, Hand of Ragnaros", sell_in=5, quality=80)
|
|
item.daily_step()
|
|
assert isinstance(item, Sulfuras)
|
|
assert item.sell_in == 0 # forced to 0 in constructor
|
|
assert item.quality == 80
|
|
|
|
|
|
def test_sulfuras_constructor_forces_quality_and_sell_in():
|
|
item = Item("Sulfuras, Hand of Ragnaros", sell_in=999, quality=10)
|
|
assert item.sell_in == 0
|
|
assert item.quality == 80
|
|
|
|
|
|
def test_sulfuras_multiple_days_unchanged():
|
|
item = Item("Sulfuras, Hand of Ragnaros", sell_in=0, quality=80)
|
|
for _ in range(10):
|
|
item.daily_step()
|
|
assert item.sell_in == 0
|
|
assert item.quality == 80
|
|
|
|
|
|
def test_sulfuras_mapping_via_item_new():
|
|
# Ensure mapping creates Sulfuras instance
|
|
item = Item("Sulfuras, Hand of Ragnaros", sell_in=1, quality=80)
|
|
assert isinstance(item, Sulfuras)
|
|
|
|
|
|
def test_sulfuras_ignores_input_quality_not_80():
|
|
# Even if we try to pass a non-80 quality, constructor forces 80
|
|
item = Item("Sulfuras, Hand of Ragnaros", sell_in=1, quality=0)
|
|
assert item.quality == 80
|