From fa253f047d45645209ae64e032612af1b4ace2e4 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Fri, 5 Oct 2018 21:00:20 +0200 Subject: [PATCH] Add unit tests for sellIn value --- .../kotlin/com/gildedrose/GildedRoseTest.kt | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/test/kotlin/com/gildedrose/GildedRoseTest.kt b/src/test/kotlin/com/gildedrose/GildedRoseTest.kt index 5515dcdc..8e31a976 100644 --- a/src/test/kotlin/com/gildedrose/GildedRoseTest.kt +++ b/src/test/kotlin/com/gildedrose/GildedRoseTest.kt @@ -1,19 +1,38 @@ package com.gildedrose -import org.junit.Assert.* +import org.assertj.core.api.Java6Assertions.assertThat import org.junit.Test +import java.util.* class GildedRoseTest { - @Test fun foo() { - val items = arrayOf(Item("foo", 0, 0)) - val app = GildedRose(items) - app.updateQuality() - assertEquals("fixme", app.items[0].name) + @Test + fun givenRandomItem_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() { + val days = generateRandomNumber() + val initialSellIn = generateRandomNumber() + val item = Item(generateRandomName(), initialSellIn, 0) + val app = GildedRose(arrayOf(item)) + app.advanceTimeBy(days) + + assertThat(item.sellIn).isEqualTo(initialSellIn-days) } + @Test + fun givenSulfuras_afterRandomNumberOfDays_shouldHaveSameSellIn() { + val days = generateRandomNumber() + val initialSellIn = generateRandomNumber() + val item = Item("Sulfuras, Hand of Ragnaros", initialSellIn, 0) + val app = GildedRose(arrayOf(item)) + app.advanceTimeBy(days) + + assertThat(item.sellIn).isEqualTo(initialSellIn) + } + + private fun GildedRose.advanceTimeBy(days: Int) = repeat(days, { this.updateQuality() }) + + private fun generateRandomName() = UUID.randomUUID().toString() + + private fun generateRandomNumber() = (0 until 9999).shuffled().last() } - -