GildedRose-Refactoring-Kata/Java/src/test/java/com/gildedrose/GildedRoseTest.java
Trobax 112db7306b test case for legendary items
legendary items never have to be sold
2022-11-23 16:38:17 +01:00

145 lines
4.0 KiB
Java

package com.gildedrose;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
class GildedRoseTest {
@Test
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
void standardItem_quality_decreases_sellin_decreases_each_day() {
int startingSellin = 10;
int startingQuality = 14;
final Item standardItem = new Item("spam", startingSellin, startingQuality);
GildedRose app = new GildedRose(new Item[]{standardItem});
app.updateQuality();
assertThat(standardItem.sellIn).isEqualTo(startingSellin - 1);
assertThat(standardItem.quality).isEqualTo(startingQuality - 1);
}
@Test
void multiple_items_degrade_each_day() {
Item firstItem = new Item("First Standard Item", 5, 4);
Item secondItem = new Item("Second Standard Item", 3, 2);
GildedRose app = new GildedRose(new Item[]{firstItem, secondItem});
app.updateQuality();
assertThat(firstItem.sellIn).isEqualTo(4);
assertThat(firstItem.quality).isEqualTo(3);
assertThat(secondItem.sellIn).isEqualTo(2);
assertThat(secondItem.quality).isEqualTo(1);
}
@Test
void item_quality_degrades_twice_as_fast_past_sellin_date() {
Item item = new Item("Standard Item", -1, 6);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(4);
}
@Test
void item_quality_degrades_by_one_with_one_day_left() {
Item item = new Item("Standard Item", 1, 6);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(5);
}
@Test
void item_quality_degrades_down_to_zero() {
Item item = new Item("Standard Item", 5, 1);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isZero();
}
@Test
void item_quality_is_never_negative() {
Item item = new Item("First Standard Item", 4, 0);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isZero();
}
@Test
void aged_items_increase_in_quality_over_time() {
Item item = new Item("Aged Brie", 5, 6);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(7);
}
@Test
void aged_item_quality_49_increases_up_to_50() {
Item item = new Item("Aged Brie", 5, 49);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(50);
}
@Test
void aged_item_quality_increases_twice_as_fast_past_sellin_date() {
Item item = new Item("Aged Brie", 0, 6);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(8);
}
@Test
void aged_item_quality_50_past_sellin_date_does_not_increase() {
Item item = new Item("Aged Brie", 0, 50);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(50);
}
@Test
void quality_of_an_item_is_never_greater_than_50() {
Item item = new Item("Aged Brie", 5, 50);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.quality).isEqualTo(50);
}
@Test
void legendary_items_never_have_to_be_sold() {
Item item = new Item("Sulfuras, Hand of Ragnaros", -1, 80);
GildedRose app = new GildedRose(new Item[]{item});
app.updateQuality();
assertThat(item.sellIn).isEqualTo(-1);
}
}