GildedRose-Refactoring-Kata/src/test/kotlin/com/gildedrose/GildedRoseTest.kt
2018-10-05 21:00:20 +02:00

39 lines
1.1 KiB
Kotlin

package com.gildedrose
import org.assertj.core.api.Java6Assertions.assertThat
import org.junit.Test
import java.util.*
class GildedRoseTest {
@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()
}