Created
January 16, 2020 12:52
-
-
Save blisssan/93d0684cffc0290318220592d6d26a2b to your computer and use it in GitHub Desktop.
PHPUnit Testcases for Laracast Gilded Rose Kata
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Tests; | |
use PHPUnit\Framework\TestCase; | |
use App\GildedRose; | |
class GildedRoseTest extends TestCase | |
{ | |
// normal items | |
/** | |
* @test | |
*/ | |
public function updates_normal_items_before_the_sell_date() | |
{ | |
$item = GildedRose::of('normal', 10, 5); // quality, sell in X days | |
$item->tick(); | |
$this->assertEquals(9, $item->quality); | |
$this->assertEquals(4, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_normal_items_on_the_sell_date() | |
{ | |
$item = GildedRose::of('normal', 10, 0); | |
$item->tick(); | |
$this->assertEquals(8, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_normal_items_after_the_sell_date() | |
{ | |
$item = GildedRose::of('normal', 10, -5); | |
$item->tick(); | |
$this->assertEquals(8, $item->quality); | |
$this->assertEquals(-6, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_normal_items_with_a_quality_of_0() | |
{ | |
$item = GildedRose::of('normal', 0, 5); | |
$item->tick(); | |
$this->assertEquals(0, $item->quality); | |
$this->assertEquals(4, $item->sellIn); | |
} | |
//Brie Items | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_before_the_sell_date() | |
{ | |
$item = GildedRose::of('Aged Brie', 10, 5); | |
$item->tick(); | |
$this->assertEquals(11, $item->quality); | |
$this->assertEquals(4, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_before_the_sell_date_with_maximum_quality() | |
{ | |
$item = GildedRose::of('Aged Brie', 50, 5); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(4, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_on_the_sell_date() | |
{ | |
$item = GildedRose::of('Aged Brie', 10, 0); | |
$item->tick(); | |
$this->assertEquals(12, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_on_the_sell_date_near_maximum_quality() | |
{ | |
$item = GildedRose::of('Aged Brie', 49, 0); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_on_the_sell_date_with_maximum_quality() | |
{ | |
$item = GildedRose::of('Aged Brie', 50, 0); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_after_the_sell_date() | |
{ | |
$item = GildedRose::of('Aged Brie', 10, -10); | |
$item->tick(); | |
$this->assertEquals(12, $item->quality); | |
$this->assertEquals(-11, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Brie_items_after_the_sell_date_with_maximum_quality() | |
{ | |
$item = GildedRose::of('Aged Brie', 50, -10); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(-11, $item->sellIn); | |
} | |
// Sulfuras Items | |
/** | |
* @test | |
*/ | |
public function updates_Sulfuras_items_before_the_sell_date() | |
{ | |
$item = GildedRose::of('Sulfuras, Hand of Ragnaros', 10, 5); | |
$item->tick(); | |
$this->assertEquals(10, $item->quality); | |
$this->assertEquals(5, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Sulfuras_items_on_the_sell_date() | |
{ | |
$item = GildedRose::of('Sulfuras, Hand of Ragnaros', 10, 5); | |
$item->tick(); | |
$this->assertEquals(10, $item->quality); | |
$this->assertEquals(5, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Sulfuras_items_after_the_sell_date() | |
{ | |
$item = GildedRose::of('Sulfuras, Hand of Ragnaros', 10, -1); | |
$item->tick(); | |
$this->assertEquals(10, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/* | |
"Backstage passes", like aged brie, increases in Quality as it's SellIn | |
value approaches; Quality increases by 2 when there are 10 days or | |
less and by 3 when there are 5 days or less but Quality drops to | |
0 after the concert | |
*/ | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_long_before_the_sell_date() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 10, 11); | |
$item->tick(); | |
$this->assertEquals(11, $item->quality); | |
$this->assertEquals(10, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_close_to_the_sell_date() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 10, 10); | |
$item->tick(); | |
$this->assertEquals(12, $item->quality); | |
$this->assertEquals(9, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_close_to_the_sell_data_at_max_quality() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 50, 10); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(9, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_very_close_to_the_sell_date() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 10, 5); | |
$item->tick(); | |
$this->assertEquals(13, $item->quality); // goes up by 3 | |
$this->assertEquals(4, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_very_close_to_the_sell_date_at_max_quality() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 50, 5); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(4, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_with_one_day_left_to_sell() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 10, 1); | |
$item->tick(); | |
$this->assertEquals(13, $item->quality); | |
$this->assertEquals(0, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_with_one_day_left_to_sell_at_max_quality() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 50, 1); | |
$item->tick(); | |
$this->assertEquals(50, $item->quality); | |
$this->assertEquals(0, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_on_the_sell_date() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 10, 0); | |
$item->tick(); | |
$this->assertEquals(0, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Backstage_pass_items_after_the_sell_date() | |
{ | |
$item = GildedRose::of('Backstage passes to a TAFKAL80ETC concert', 10, -1); | |
$item->tick(); | |
$this->assertEquals(0, $item->quality); | |
$this->assertEquals(-2, $item->sellIn); | |
} | |
// Conjured Items | |
/** | |
* @test | |
*/ | |
public function updates_Conjured_items_before_the_sell_date() | |
{ | |
$item = GildedRose::of('Conjured Mana Cake', 10, 10); | |
$item->tick(); | |
$this->assertEquals(8, $item->quality); | |
$this->assertEquals(9, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Conjured_items_at_zero_quality() | |
{ | |
$item = GildedRose::of('Conjured Mana Cake', 0, 10); | |
$item->tick(); | |
$this->assertEquals(0, $item->quality); | |
$this->assertEquals(9, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Conjured_items_on_the_sell_date() | |
{ | |
$item = GildedRose::of('Conjured Mana Cake', 10, 0); | |
$item->tick(); | |
$this->assertEquals(6, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Conjured_items_on_the_sell_date_at_0_quality() | |
{ | |
$item = GildedRose::of('Conjured Mana Cake', 0, 0); | |
$item->tick(); | |
$this->assertEquals(0, $item->quality); | |
$this->assertEquals(-1, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Conjured_items_after_the_sell_date() | |
{ | |
$item = GildedRose::of('Conjured Mana Cake', 10, -10); | |
$item->tick(); | |
$this->assertEquals(6, $item->quality); | |
$this->assertEquals(-11, $item->sellIn); | |
} | |
/** | |
* @test | |
*/ | |
public function updates_Conjured_items_after_the_sell_date_at_zero_quality() | |
{ | |
$item = GildedRose::of('Conjured Mana Cake', 0, -10); | |
$item->tick(); | |
$this->assertEquals(0, $item->quality); | |
$this->assertEquals(-11, $item->sellIn); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment