mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
96 lines
4.0 KiB
PHP
96 lines
4.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests;
|
|
|
|
use GildedRose\Item;
|
|
use GildedRose\StrategyResolverInterface;
|
|
|
|
class GildedRoseTest extends TestCase
|
|
{
|
|
/**
|
|
* @group GildedRose
|
|
*/
|
|
public function testFooItemNameIsTheSameAfterUpdatedQuality(): void
|
|
{
|
|
$items = [new Item('foo', 0, 0)];
|
|
$gildedRose = $this->initializeGlidedRose($items);
|
|
|
|
$gildedRose->updateQuality();
|
|
|
|
$this->assertSame('foo', $items[0]->name);
|
|
}
|
|
|
|
/**
|
|
* @group GildedRose
|
|
*/
|
|
public function testDifferentMultiItemsDataIsCorrectAfterUpdatedQuality(): void
|
|
{
|
|
$items = [
|
|
new Item('another foo', 1, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_AGED_BRIE, 0, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_SULFURAS, 777, 777),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 5, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_CONJURED, 1, 10),
|
|
];
|
|
$gildedRose = $this->initializeGlidedRose($items);
|
|
|
|
$gildedRose->updateQuality();
|
|
|
|
$this->assertSameItem(new Item('another foo', 0, 9), $items[0]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_AGED_BRIE, -1, 12), $items[1]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_SULFURAS, 777, 777), $items[2]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 4, 13), $items[3]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_CONJURED, 0, 8), $items[4]);
|
|
}
|
|
|
|
/**
|
|
* @group GildedRose
|
|
*/
|
|
public function testSameMultiItemsDataIsCorrectAfterUpdatedQuality(): void
|
|
{
|
|
$items = [
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 0, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 1, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 5, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 10, 10),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 100, 10),
|
|
];
|
|
$gildedRose = $this->initializeGlidedRose($items);
|
|
|
|
$gildedRose->updateQuality();
|
|
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, -1, 0), $items[0]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 0, 13), $items[1]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 4, 13), $items[2]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 9, 12), $items[3]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 99, 11), $items[4]);
|
|
}
|
|
|
|
/**
|
|
* @group GildedRose
|
|
*/
|
|
public function testDifferentMultiItemsDataIsCorrectAfterUpdatedQualityThirtyTimes(): void
|
|
{
|
|
$items = [
|
|
new Item('another super foo', 20, 60),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_AGED_BRIE, 20, 0),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_SULFURAS, 777, 777),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 31, 0),
|
|
new Item(StrategyResolverInterface::ITEM_NAME_CONJURED, 28, 777),
|
|
];
|
|
$gildedRose = $this->initializeGlidedRose($items);
|
|
|
|
for ($i = 0; $i < 30; $i++) {
|
|
$gildedRose->updateQuality();
|
|
}
|
|
|
|
$this->assertSameItem(new Item('another super foo', -10, 10), $items[0]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_AGED_BRIE, -10, 40), $items[1]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_SULFURAS, 777, 777), $items[2]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_BACKSTAGE_PASSES, 1, 45), $items[3]);
|
|
$this->assertSameItem(new Item(StrategyResolverInterface::ITEM_NAME_CONJURED, -2, 0), $items[4]);
|
|
}
|
|
}
|