diff --git a/Java/src/main/java/com/gildedrose/items/SulfurasItem.java b/Java/src/main/java/com/gildedrose/items/SulfurasItem.java new file mode 100644 index 00000000..1791f2e4 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/items/SulfurasItem.java @@ -0,0 +1,21 @@ +package com.gildedrose.items; + +import com.gildedrose.Quality; +import com.gildedrose.SellIn; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +public class SulfurasItem extends GildedRoseItem { + + static final Quality DEFAULT_QUALITY = Quality.create(80); + + public SulfurasItem(SellIn sellIn) { + super("Sulfuras", sellIn, DEFAULT_QUALITY, Boolean.FALSE); + } + + @Override + protected Quality nextQuality(Quality previous) { + // being a legendary item, never has to be sold or decreases in Quality + return previous.copy(); + } +} diff --git a/Java/src/test/java/com/gildedrose/items/SulfurasItemTest.java b/Java/src/test/java/com/gildedrose/items/SulfurasItemTest.java new file mode 100644 index 00000000..94e31053 --- /dev/null +++ b/Java/src/test/java/com/gildedrose/items/SulfurasItemTest.java @@ -0,0 +1,22 @@ +package com.gildedrose.items; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.gildedrose.Quality; +import com.gildedrose.SellIn; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +class SulfurasItemTest { + private final SulfurasItem item = new SulfurasItem(SellIn.create(0)); + + @Nested + class nextQuality { + @Test + void should_never_update_quality() { + Quality nextQuality = item.nextQuality(SulfurasItem.DEFAULT_QUALITY); + + assertThat(nextQuality).isEqualTo(SulfurasItem.DEFAULT_QUALITY); + } + } +}