diff --git a/php/src/GildedRose.php b/php/src/GildedRose.php index eb816198..095acecd 100644 --- a/php/src/GildedRose.php +++ b/php/src/GildedRose.php @@ -22,7 +22,13 @@ final class GildedRose public function updateQuality(): void { foreach ($this->items as $item) { - switch ($item->name) { + + $name = $item->name; + if(str_starts_with(strtolower($name), 'conjured')) { + $name = 'conjured'; + } + + switch ($name) { case 'Aged Brie': $item->sellIn--; if ($item->quality < 50) { @@ -51,6 +57,15 @@ final class GildedRose case 'Sulfuras, Hand of Ragnaros': $item->quality = 80; break; + case 'conjured': + $item->sellIn--; + if($item->quality > 0) { + $item->quality--; + if($item->quality > 0) { + $item->quality--; + } + } + break; default: // Normal Items $item->sellIn--; if ($item->quality > 0) { diff --git a/php/tests/GildedRoseTest.php b/php/tests/GildedRoseTest.php index a501b005..e51d2391 100644 --- a/php/tests/GildedRoseTest.php +++ b/php/tests/GildedRoseTest.php @@ -405,4 +405,52 @@ class GildedRoseTest extends TestCase $this->assertSame(0, $updatedItems[0]->quality); } // END testBackstagePassQualityIs0AfterConcert() + + /** + * Conjured Items test + */ + public function testConjuredItemQualityDegrade(): void + { + echo ("Starting " . __FUNCTION__ . PHP_EOL); + + $name = "ConjuredFoo"; + $sellIn = 10; + $quality = 20; + + $items = [ + new Item($name, $sellIn, $quality) + ]; + + $gildedRose = new GildedRose($items); + + $gildedRose->updateQuality(); + + $conjuredItems = $gildedRose->getItems(); + $this->assertSame($name, $conjuredItems[0]->name); + $this->assertSame(($sellIn - 1), $conjuredItems[0]->sellIn); + $this->assertSame(($quality - 2), $conjuredItems[0]->quality); + } // END testConjuredItemQualityDegrade() + + public function testConjuredAgedBrieQualityDegradeAsNormal(): void + { + echo ("Starting " . __FUNCTION__ . PHP_EOL); + + $name = "Conjured Aged Brie"; + $sellIn = 10; + $quality = 20; + + $items = [ + new Item($name, $sellIn, $quality) + ]; + + $gildedRose = new GildedRose($items); + + $gildedRose->updateQuality(); + + $conjuredItems = $gildedRose->getItems(); + $this->assertSame($name, $conjuredItems[0]->name); + $this->assertSame(($sellIn - 1), $conjuredItems[0]->sellIn); + $this->assertSame(($quality - 2), $conjuredItems[0]->quality); + } // END testConjuredAgedBrieQualityDegradeAsNormal() + }