mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-04 09:11:39 +00:00
118 lines
3.1 KiB
Python
118 lines
3.1 KiB
Python
from python.gilded_rose import (
|
|
GildedRose,
|
|
Item,
|
|
NormalItem,
|
|
AgedBrieItem,
|
|
SulfurasItem,
|
|
BackstagePassItem,
|
|
ConjuredItem,
|
|
)
|
|
import pytest
|
|
|
|
|
|
# --- Tests for NormalItem ---
|
|
def test_normal_item_quality_decreases_by_1():
|
|
item = NormalItem("Westin", 10, 20)
|
|
item.update_quality()
|
|
assert item.quality == 19
|
|
assert item.sell_in == 9
|
|
|
|
|
|
def test_normal_item_quality_decreases_by_2_after_sell_in():
|
|
item = NormalItem("Westin", 0, 20)
|
|
item.update_quality()
|
|
assert item.quality == 18
|
|
assert item.sell_in == -1
|
|
|
|
|
|
def test_normal_item_quality_never_negative():
|
|
item = NormalItem("Westin", 10, 0)
|
|
item.update_quality()
|
|
assert item.quality == 0
|
|
assert item.sell_in == 9
|
|
|
|
|
|
def test_aged_brie_quality_increases():
|
|
item = AgedBrieItem("Aged Brie", 10, 20)
|
|
item.update_quality()
|
|
assert item.quality == 21
|
|
assert item.sell_in == 9
|
|
|
|
|
|
def test_aged_brie_quality_increases_twice_after_sell_in():
|
|
item = AgedBrieItem("Aged Brie", 0, 20)
|
|
item.update_quality()
|
|
assert item.quality == 22
|
|
assert item.sell_in == -1
|
|
|
|
|
|
def test_aged_brie_quality_never_exceeds_50():
|
|
item = AgedBrieItem("Aged Brie", 10, 49)
|
|
item.update_quality()
|
|
assert item.quality == 50
|
|
item.update_quality() # One more day
|
|
assert item.quality == 50
|
|
|
|
|
|
def test_sulfuras_quality_and_sell_in_never_change():
|
|
item = SulfurasItem("Sulfuras, Hand of Ragnaros", 0, 80)
|
|
item.update_quality()
|
|
assert item.quality == 80
|
|
assert item.sell_in == 0
|
|
|
|
|
|
def test_backstage_pass_quality_increases_by_1_normally():
|
|
item = BackstagePassItem("Backstage passes", 15, 20)
|
|
item.update_quality()
|
|
assert item.quality == 21
|
|
assert item.sell_in == 14
|
|
|
|
|
|
def test_backstage_pass_quality_increases_by_2_at_10_days_or_less():
|
|
item = BackstagePassItem("Backstage passes", 10, 20)
|
|
item.update_quality()
|
|
assert item.quality == 22
|
|
assert item.sell_in == 9
|
|
|
|
|
|
def test_backstage_pass_quality_increases_by_3_at_5_days_or_less():
|
|
item = BackstagePassItem("Backstage passes", 5, 20)
|
|
item.update_quality()
|
|
assert item.quality == 23
|
|
assert item.sell_in == 4
|
|
|
|
|
|
def test_backstage_pass_quality_drops_to_0_after_concert():
|
|
item = BackstagePassItem("Backstage passes", 0, 20)
|
|
item.update_quality()
|
|
assert item.quality == 0
|
|
assert item.sell_in == -1
|
|
|
|
|
|
def test_backstage_pass_quality_never_exceeds_50():
|
|
item = BackstagePassItem("Backstage passes", 10, 49)
|
|
item.update_quality()
|
|
assert item.quality == 50
|
|
|
|
|
|
# Test cases for Conjured Items
|
|
def test_conjured_item_quality_decreases_by_2_normally():
|
|
item = ConjuredItem("Conjured Mana Cake", 10, 20)
|
|
item.update_quality()
|
|
assert item.quality == 18
|
|
assert item.sell_in == 9
|
|
|
|
|
|
def test_conjured_item_quality_decreases_by_4_after_sell_in():
|
|
item = ConjuredItem("Conjured Mana Cake", 0, 20)
|
|
item.update_quality()
|
|
assert item.quality == 16
|
|
assert item.sell_in == -1
|
|
|
|
|
|
def test_conjured_item_quality_never_negative():
|
|
item = ConjuredItem("Conjured Mana Cake", 10, 1)
|
|
item.update_quality()
|
|
assert item.quality == 0
|
|
assert item.sell_in == 9
|