From 559ac9fb910e211f6f6b595ea4d16c26ddde5175 Mon Sep 17 00:00:00 2001 From: Atul Anand Date: Mon, 14 Sep 2020 01:15:19 +0530 Subject: [PATCH] Failing test for Conjured items. Signed-off-by: Atul Anand --- .../scala/com/gildedrose/GildedRoseTest.scala | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/scala/src/test/scala/com/gildedrose/GildedRoseTest.scala b/scala/src/test/scala/com/gildedrose/GildedRoseTest.scala index 41dc98ec..1369386b 100644 --- a/scala/src/test/scala/com/gildedrose/GildedRoseTest.scala +++ b/scala/src/test/scala/com/gildedrose/GildedRoseTest.scala @@ -50,7 +50,7 @@ class GildedRoseTest extends AnyWordSpec with Matchers with BeforeAndAfter { itemCreator.backstagePassItem(sellIn, quality), itemCreator.agedBrieItem(sellIn, quality), itemCreator.dexterityItem(sellIn, quality), - itemCreator.elixirItem(sellIn, quality), + itemCreator.elixirItem(sellIn, quality) ) } @@ -72,7 +72,7 @@ class GildedRoseTest extends AnyWordSpec with Matchers with BeforeAndAfter { private def createItemsOfDecreasingQuality(sellIn: Int, quality: Int) = { Array[Item]( itemCreator.dexterityItem(sellIn, quality), - itemCreator.elixirItem(sellIn, quality), + itemCreator.elixirItem(sellIn, quality) ) } @@ -88,6 +88,31 @@ class GildedRoseTest extends AnyWordSpec with Matchers with BeforeAndAfter { assert(i.quality == quality - diff) } + "quality of Conjured items degrade twice as fast of elixir" in { + val sellIn = 1 + val quality = 30 + app = createApp(createItemsWithConjuredAndElixir(sellIn, quality)) + verifyQualityForConjuredAgainstElixir(sellIn) + } + + private def createItemsWithConjuredAndElixir(sellIn: Int, quality: Int) = { + Array[Item]( + itemCreator.conjuredItem(sellIn, quality), + itemCreator.elixirItem(sellIn, quality) + ) + } + + private def verifyQualityForConjuredAgainstElixir(sellIn: Int): Unit = { + for (i <- 1 to sellIn) { + val prevQualityConjured = app.items(0).quality + val prevQualityElixir = app.items(1).quality + app.updateQuality() + val conjuredQualityDrop = prevQualityConjured - app.items(0).quality + val elixirQualityDrop = prevQualityElixir - app.items(1).quality + assert(conjuredQualityDrop == 2 * elixirQualityDrop) + } + } + "quality of Aged Brie increases with time and stays below 50" in { app = createApp(createItemsWithOnlyAgedBrie()) verifyQualityForAgedBrie()