diff --git a/Java/src/main/java/com/gildedrose/items/NormalItem.java b/Java/src/main/java/com/gildedrose/items/NormalItem.java new file mode 100644 index 00000000..bc7f1dc3 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/items/NormalItem.java @@ -0,0 +1,20 @@ +package com.gildedrose.items; + +import com.gildedrose.Quality; +import com.gildedrose.SellIn; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +public class NormalItem extends GildedRoseItem { + + public NormalItem(String name, SellIn sellIn, Quality quality, boolean conjured) { + super(name, sellIn, quality, conjured); + } + + @Override + protected Quality nextQuality(Quality previous) { + Quality nextQuality = previous.copy(); + nextQuality.decrement(); + return nextQuality; + } +} diff --git a/Java/src/test/java/com/gildedrose/items/NormalItemTest.java b/Java/src/test/java/com/gildedrose/items/NormalItemTest.java new file mode 100644 index 00000000..c85010ff --- /dev/null +++ b/Java/src/test/java/com/gildedrose/items/NormalItemTest.java @@ -0,0 +1,24 @@ +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 NormalItemTest { + + @Nested + class nextQuality { + private final NormalItem item = + new NormalItem("+5 Dexterity Vest", SellIn.create(10), Quality.create(1), Boolean.FALSE); + + @Test + void should_decrement_quality_in_one() { + Quality nextQuality = item.nextQuality(Quality.create(1)); + + assertThat(nextQuality.getValue()).isZero(); + } + } +}