GildedRose-Refactoring-Kata/Java/src/test/java/com/gildedrose/GildedRoseTest.java

110 lines
3.4 KiB
Java

package com.gildedrose;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class GildedRoseTest {
@Test
public void foo() {
Item[] items = new Item[] { new Item("foo", 0, 0) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals("foo", app.items[0].name);
}
@Test
@DisplayName("At the end of each day our system lowers both values for every item")
public void shouldLowerBothValues(){
Item[] items = new Item[] { TestHelper.getItem("foobar", 2, 2) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(1, app.items[0].quality);
assertEquals(1, app.items[0].sellIn);
}
@Test
@DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast")
public void shouldDowngradeTwiceAsFastAfterSellDate(){
Item[] items = new Item[] { TestHelper.getItem("foobar", 1, 5) };
GildedRose app = new GildedRose(items);
//day 1, drop by 1
app.updateQuality();
assertEquals(4, app.items[0].quality);
assertEquals(0, app.items[0].sellIn);
//day 2, drop by 2
app.updateQuality();
assertEquals(2, app.items[0].quality);
assertEquals(-1, app.items[0].sellIn);
}
@Test
@DisplayName("The Quality of an item is never negative")
public void shouldNeverHaveANegativeQuality() {
Item[] items = new Item[]{TestHelper.getItem("foobar", 0, 0)};
GildedRose app = new GildedRose(items);
//day 1, drop by 1
app.updateQuality();
assertEquals(0, app.items[0].quality);
//day 2, drop by 1 => quality is still 0
app.updateQuality();
assertEquals(0, app.items[0].quality);
}
@Test
@DisplayName("\"Aged Brie\" actually increases in Quality by 2 the older it gets")
public void shouldSeeAgedBrieIncreasedQualityDayByDay(){
Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 0)};
GildedRose app = new GildedRose(items);
//day 1, add 2
app.updateQuality();
assertEquals(2, app.items[0].quality);
//day 2, add 2
app.updateQuality();
assertEquals(4, app.items[0].quality);
}
@Test
@DisplayName("The Quality of an item is never more than 50")
public void shouldNeverHaveQualityHigherThan50(){
Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 49)};
GildedRose app = new GildedRose(items);
//day 1, add 2
app.updateQuality();
assertEquals(50, app.items[0].quality);
//day 2, add 2
app.updateQuality();
assertEquals(50, app.items[0].quality);
}
//Sulfuras, Hand of Ragnaros
@Test
@DisplayName("\"Sulfuras\", being a legendary item, never has to be sold or decreases in Quality")
public void should(){
Item[] items = new Item[]{TestHelper.getItem("Sulfuras, Hand of Ragnaros", 0, 10)};
GildedRose app = new GildedRose(items);
//day 1, don't impact quality
app.updateQuality();
assertEquals(10, app.items[0].quality);
assertEquals(0, app.items[0].sellIn);
//day 0, don't impact quality
app.updateQuality();
assertEquals(10, app.items[0].quality);
assertEquals(0, app.items[0].sellIn);
}
}