Skip to content

Commit 3845fdf

Browse files
committed
feat: support conjured backstage passes
1 parent d80a3ed commit 3845fdf

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

src/gilded_rose/inn.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ def compute_after_a_day(self) -> "Item":
5252
sell_in = self.sell_in
5353

5454
if self._backstage_passes:
55-
quality = min(50, self.quality + 1)
55+
quality = min(50, self.quality + 1 * quality_multiplier)
5656

5757
if self._backstage_passes and self.sell_in <= 10:
58-
quality = min(50, self.quality + 2)
58+
quality = min(50, self.quality + 2 * quality_multiplier)
5959

6060
if self._backstage_passes and self.sell_in <= 5:
61-
quality = min(50, self.quality + 3)
61+
quality = min(50, self.quality + 3 * quality_multiplier)
6262

6363
if self._backstage_passes and self.sell_in <= 0:
6464
quality = 0

tests/test_inn.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Test suite for the Gilded Rose inventory system."""
22

3+
import pytest
4+
35
from gilded_rose.inn import GildedRose, Item
46
from tests.builder import an_item
57

@@ -224,3 +226,19 @@ def test_conjured_legendary_items_never_degrade():
224226
# Assert
225227
assert gilded_rose.items[0].quality == 80
226228
assert gilded_rose.items[0].sell_in == 0
229+
230+
231+
@pytest.mark.parametrize(("sell_in", "expected"), [(20, 7), (10, 9), (5, 11), (0, 0)])
232+
def test_conjured_backstage_passes_ennobles_twice_as_fast_with_time(sell_in, expected):
233+
"""Test that conjured backstage passes increase in quality over time."""
234+
# Arrange
235+
item = (
236+
an_item().conjured().backstage_passes().sell_in(sell_in).with_quality(5).build()
237+
)
238+
239+
# Act
240+
sut = GildedRose([item])
241+
sut.update_quality()
242+
243+
# Assert
244+
assert sut.items[0].quality == expected

0 commit comments

Comments
 (0)