diff --git a/php/src/GildedRose.php b/php/src/GildedRose.php index 3797aae1..e622cda0 100644 --- a/php/src/GildedRose.php +++ b/php/src/GildedRose.php @@ -26,7 +26,7 @@ final class GildedRose { foreach ($this->items as $item) { - if ($item->name === 'Sulfuras, Hand of Ragnaros' || $item->name === 'Backstage passes to a TAFKAL80ETC concert') { + if ($item->name === 'Sulfuras, Hand of Ragnaros' || $item->name === 'Backstage passes to a TAFKAL80ETC concert' || $item->name === 'Aged Brie') { $gildedRoseItem = $this->gildedRoseItemFactory->createGildedRoseItem($item); $gildedRoseItem->ageByOneDay(); continue; diff --git a/php/src/GildedRoseItem/BrieItem.php b/php/src/GildedRoseItem/BrieItem.php index 1797c65e..8ef86989 100644 --- a/php/src/GildedRoseItem/BrieItem.php +++ b/php/src/GildedRoseItem/BrieItem.php @@ -16,9 +16,15 @@ class BrieItem implements GildedRoseItem public function ageByOneDay(): void { $this->item->sellIn -= 1; + $this->item->quality = min(50, $this->getNewQuality($this->item->quality, $this->item->sellIn)); + } - if ($this->item->quality < 50) { - $this->item->quality += 1; + private function getNewQuality(int $previousQuality, int $sellIn): int + { + if ($sellIn < 0) { + return $previousQuality + 2; } + + return $previousQuality + 1; } } diff --git a/php/tests/behat/feature_files/brie.feature b/php/tests/behat/feature_files/brie.feature index 7314ee1f..d0c31e5c 100644 --- a/php/tests/behat/feature_files/brie.feature +++ b/php/tests/behat/feature_files/brie.feature @@ -14,3 +14,8 @@ Feature: Brie quality changes Given some brie with a sell-in of 20 and a quality of 50 When I update the quality Then the item should have a quality of 50 + + Scenario: Aged brie gets better faster after sell-by date + Given some brie with a sell-in of 0 and a quality of 20 + When I update the quality + Then the item should have a quality of 22