mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Conjured商品追加
This commit is contained in:
parent
1f64334566
commit
6b85d52e6f
@ -35,6 +35,9 @@ final class GildedRose
|
|||||||
・計算後sell_inが10未満の場合、さらにquality+1する
|
・計算後sell_inが10未満の場合、さらにquality+1する
|
||||||
・計算後sell_inが5未満の場合、さらにquality+1する
|
・計算後sell_inが5未満の場合、さらにquality+1する
|
||||||
・計算後sell_inが0未満の場合、qualityを0にする
|
・計算後sell_inが0未満の場合、qualityを0にする
|
||||||
|
[商品:Conjured]
|
||||||
|
・引数のsell_inを-1する
|
||||||
|
・引数のqualityを-2する
|
||||||
[その他商品]
|
[その他商品]
|
||||||
・引数のsell_inを-1する
|
・引数のsell_inを-1する
|
||||||
・引数のqualityを-1する
|
・引数のqualityを-1する
|
||||||
@ -56,6 +59,9 @@ final class GildedRose
|
|||||||
} elseif ($this->item->name === 'Backstage passes to a TAFKAL80ETC concert') {
|
} elseif ($this->item->name === 'Backstage passes to a TAFKAL80ETC concert') {
|
||||||
// 商品:Backstage passesの処理
|
// 商品:Backstage passesの処理
|
||||||
$this->backstagePasses();
|
$this->backstagePasses();
|
||||||
|
} elseif ($this->item->name === 'Conjured Mana Cake') {
|
||||||
|
// 商品:Conjuredの処理
|
||||||
|
$this->conjured();
|
||||||
} else {
|
} else {
|
||||||
// その他商品の処理
|
// その他商品の処理
|
||||||
$this->others();
|
$this->others();
|
||||||
@ -107,6 +113,17 @@ final class GildedRose
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品:Conjured計算処理
|
||||||
|
*/
|
||||||
|
private function conjured(): void
|
||||||
|
{
|
||||||
|
$this->calcSellInSubtraction();
|
||||||
|
// 新たな関数は作成せず減算処理を2回実行する
|
||||||
|
$this->calcQualitySubtraction();
|
||||||
|
$this->calcQualitySubtraction();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* その他商品
|
* その他商品
|
||||||
*/
|
*/
|
||||||
@ -151,4 +168,3 @@ final class GildedRose
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -242,6 +242,48 @@ class GildedRoseTest extends TestCase
|
|||||||
$this->assertSame(0, $items[0]->quality);
|
$this->assertSame(0, $items[0]->quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conjured:sell_inが1以上、qualityが50未満
|
||||||
|
* 期待値:sell_inが-1、qualityが-2
|
||||||
|
*/
|
||||||
|
public function testConjuredsNormal(): void
|
||||||
|
{
|
||||||
|
$items = [new Item('Conjured Mana Cake', 10, 10)];
|
||||||
|
$gildedRose = new GildedRose($items);
|
||||||
|
$gildedRose->updateQuality();
|
||||||
|
$this->assertSame('Conjured Mana Cake', $items[0]->name);
|
||||||
|
$this->assertSame(9, $items[0]->sell_in);
|
||||||
|
$this->assertSame(8, $items[0]->quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conjured:sell_inが1以上、qualityが1
|
||||||
|
* 期待値:sell_inが-1、qualityが-1
|
||||||
|
*/
|
||||||
|
public function testConjuredQuality1(): void
|
||||||
|
{
|
||||||
|
$items = [new Item('Conjured Mana Cake', 10, 1)];
|
||||||
|
$gildedRose = new GildedRose($items);
|
||||||
|
$gildedRose->updateQuality();
|
||||||
|
$this->assertSame('Conjured Mana Cake', $items[0]->name);
|
||||||
|
$this->assertSame(9, $items[0]->sell_in);
|
||||||
|
$this->assertSame(0, $items[0]->quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conjured:sell_inが1以上、qualityが0
|
||||||
|
* 期待値:sell_inが-1、qualityは変更なし
|
||||||
|
*/
|
||||||
|
public function testConjuredQuality0(): void
|
||||||
|
{
|
||||||
|
$items = [new Item('Conjured Mana Cake', 10, 0)];
|
||||||
|
$gildedRose = new GildedRose($items);
|
||||||
|
$gildedRose->updateQuality();
|
||||||
|
$this->assertSame('Conjured Mana Cake', $items[0]->name);
|
||||||
|
$this->assertSame(9, $items[0]->sell_in);
|
||||||
|
$this->assertSame(0, $items[0]->quality);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 複数商品
|
* 複数商品
|
||||||
*/
|
*/
|
||||||
@ -252,6 +294,7 @@ class GildedRoseTest extends TestCase
|
|||||||
new Item('Sulfuras, Hand of Ragnaros', 5, 80),
|
new Item('Sulfuras, Hand of Ragnaros', 5, 80),
|
||||||
new Item('Backstage passes to a TAFKAL80ETC concert', 5, 10),
|
new Item('Backstage passes to a TAFKAL80ETC concert', 5, 10),
|
||||||
new Item('Foo', 5, 10),
|
new Item('Foo', 5, 10),
|
||||||
|
new Item('Conjured Mana Cake', 5, 10),
|
||||||
];
|
];
|
||||||
$gildedRose = new GildedRose($items);
|
$gildedRose = new GildedRose($items);
|
||||||
$gildedRose->updateQuality();
|
$gildedRose->updateQuality();
|
||||||
@ -267,6 +310,9 @@ class GildedRoseTest extends TestCase
|
|||||||
$this->assertSame('Foo', $items[3]->name);
|
$this->assertSame('Foo', $items[3]->name);
|
||||||
$this->assertSame(4, $items[3]->sell_in);
|
$this->assertSame(4, $items[3]->sell_in);
|
||||||
$this->assertSame(9, $items[3]->quality);
|
$this->assertSame(9, $items[3]->quality);
|
||||||
|
$this->assertSame('Conjured Mana Cake', $items[4]->name);
|
||||||
|
$this->assertSame(4, $items[4]->sell_in);
|
||||||
|
$this->assertSame(8, $items[4]->quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
// テストエラーの原因が特定できないので後で調査する
|
// テストエラーの原因が特定できないので後で調査する
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user