diff --git a/Java/src/main/java/com/gildedrose/model/BaseItem.java b/Java/src/main/java/com/gildedrose/model/BaseItem.java index a19c1561..0ca5b7dd 100644 --- a/Java/src/main/java/com/gildedrose/model/BaseItem.java +++ b/Java/src/main/java/com/gildedrose/model/BaseItem.java @@ -34,10 +34,14 @@ public class BaseItem { } private void updateQuality() { - setQuality(getQuality() - 1); + setQuality(getQuality() + qualityChange()); } protected boolean isExpired() { return item.sellIn < 0; } + + private int qualityChange() { + return isExpired() ? -2 : -1; + } } diff --git a/Java/src/test/java/com/gildedrose/model/BaseItemTest.java b/Java/src/test/java/com/gildedrose/model/BaseItemTest.java index 881e245d..ad7c0581 100644 --- a/Java/src/test/java/com/gildedrose/model/BaseItemTest.java +++ b/Java/src/test/java/com/gildedrose/model/BaseItemTest.java @@ -52,4 +52,11 @@ class BaseItemTest { assertTrue(testItem.isExpired()); } + @Test + void givenAnExpiredBaseItem_whenUpdated_thenQualityDecrementsByTwo() { + BaseItem testItem = new BaseItem(new Item("test_item", 0, 10)); + testItem.update(); + assertEquals(8, testItem.getQuality()); + } + }