mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Add tests
This commit is contained in:
parent
9fff3f34ab
commit
44085d93d0
@ -17,4 +17,113 @@ class GildedRoseTest extends TestCase
|
||||
$gildedRose->updateQuality();
|
||||
$this->assertSame('foo', $items[0]->name);
|
||||
}
|
||||
|
||||
public function testQualityDegradesTwiceAsFastWhenSellDateHasPassed(): void
|
||||
{
|
||||
//Given
|
||||
$items = [new Item('foo', 0, 5)];
|
||||
$gildedRose = new GildedRose($items);
|
||||
|
||||
//When
|
||||
$gildedRose->updateQuality();
|
||||
|
||||
//Then
|
||||
$this->assertSame(3, $items[0]->quality);
|
||||
}
|
||||
|
||||
public function testQualityOfItemIsNeverNegative(): void
|
||||
{
|
||||
//Given
|
||||
$items = [new Item('foo', 0, 0)];
|
||||
$gildedRose = new GildedRose($items);
|
||||
|
||||
//When
|
||||
$gildedRose->updateQuality();
|
||||
|
||||
//Then
|
||||
$this->assertSame(0, $items[0]->quality);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider itemsThatIncreasesQualityWhenGetsOlder
|
||||
*/
|
||||
public function testItemIncreasesQualityWhenGetsOlder(
|
||||
string $name,
|
||||
int $sellIn,
|
||||
int $resultSellIn,
|
||||
int $quality,
|
||||
int $resultQuality
|
||||
): void {
|
||||
//Given
|
||||
$items = [new Item($name, $sellIn, $quality)];
|
||||
$gildedRose = new GildedRose($items);
|
||||
|
||||
//When
|
||||
$gildedRose->updateQuality();
|
||||
|
||||
//Then
|
||||
$this->assertSame($resultQuality, $items[0]->quality);
|
||||
$this->assertSame($resultSellIn, $items[0]->sell_in);
|
||||
}
|
||||
|
||||
public function itemsThatIncreasesQualityWhenGetsOlder(): array
|
||||
{
|
||||
return [
|
||||
[
|
||||
'name' => 'Aged Brie',
|
||||
'sell_in' => 10,
|
||||
'result_sell_in' => 9,
|
||||
'quality' => 5,
|
||||
'result_quality' => 6
|
||||
],
|
||||
'Quality increases by 2 when there are 10 days or less' => [
|
||||
'name' => 'Backstage passes to a TAFKAL80ETC concert',
|
||||
'sell_in' => 10,
|
||||
'result_sell_in' => 9,
|
||||
'quality' => 5,
|
||||
'result_quality' => 7
|
||||
],
|
||||
'Quality increases by 3 when there are 5 days or less' => [
|
||||
'name' => 'Backstage passes to a TAFKAL80ETC concert',
|
||||
'sell_in' => 5,
|
||||
'result_sell_in' => 4,
|
||||
'quality' => 5,
|
||||
'result_quality' => 8
|
||||
],
|
||||
'Quality drops to 0 after the concert' => [
|
||||
'name' => 'Backstage passes to a TAFKAL80ETC concert',
|
||||
'sell_in' => 0,
|
||||
'result_sell_in' => -1,
|
||||
'quality' => 5,
|
||||
'result_quality' => 0
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function testQualityOfItemIsNeverAboveFifty(): void
|
||||
{
|
||||
//Given
|
||||
$items = [new Item('Aged Brie', 5, 50)];
|
||||
$gildedRose = new GildedRose($items);
|
||||
|
||||
//When
|
||||
$gildedRose->updateQuality();
|
||||
|
||||
//Then
|
||||
$this->assertSame(50, $items[0]->quality);
|
||||
}
|
||||
|
||||
public function testItemSulfurasNeverChangeItsProperties(): void
|
||||
{
|
||||
//Given
|
||||
$items = [new Item('Sulfuras, Hand of Ragnaros', 5, 5)];
|
||||
$gildedRose = new GildedRose($items);
|
||||
|
||||
//When
|
||||
$gildedRose->updateQuality();
|
||||
|
||||
//Then
|
||||
$this->assertSame(5, $items[0]->quality);
|
||||
$this->assertSame(5, $items[0]->sell_in);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user