From e808c6c2334cc89ec007f1fefeda320b2ca03f70 Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Mon, 24 Jun 2019 06:50:25 +0200 Subject: [PATCH] WIP: Once the sell by date has passed, Quality degrades twice as fast --- Java/pom.xml | 20 +++++++++-- .../java/com/gildedrose/GildedRoseTest.java | 35 +++++++++++-------- .../test/java/com/gildedrose/TestHelper.java | 19 ++++++++++ 3 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 Java/src/test/java/com/gildedrose/TestHelper.java diff --git a/Java/pom.xml b/Java/pom.xml index c9dc6b67..77e11998 100644 --- a/Java/pom.xml +++ b/Java/pom.xml @@ -18,9 +18,23 @@ 1.9.4 3.11.1 5.4.2 + 1.18.8 + 3.8.1 + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + test + + + org.projectlombok + lombok + ${lombok.version} + provided + org.assertj assertj-core @@ -74,9 +88,9 @@ - org.aspectj - aspectjweaver - ${aspectj.version} + org.aspectj + aspectjweaver + ${aspectj.version} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 97c4a1e0..a9f1404e 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -1,11 +1,15 @@ package com.gildedrose; import io.qameta.allure.Feature; +import lombok.val; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static com.gildedrose.TestHelper.assertItem; +import static com.gildedrose.TestHelper.prepareApp; +import static org.apache.commons.lang3.RandomUtils.nextInt; class GildedRoseTest { @@ -24,8 +28,8 @@ class GildedRoseTest { } @Feature("The Quality of an item is never negative") - @ParameterizedTest(name="Initial quality: {arguments}") - @ValueSource(ints={0,1}) + @ParameterizedTest(name = "Initial quality: {arguments}") + @ValueSource(ints = {0, 1}) void shouldTheQualityNeverBeNegative(int initialQuality) { // given GildedRose app = prepareApp(new Item("foo", 0, initialQuality)); @@ -38,16 +42,19 @@ class GildedRoseTest { assertItem(item, "foo", 0, -1); } - private void assertItem(Item item, String expectedName, int expectedQuality, int expectedSellIn) { - assertThat(item).as("item").isNotNull(); - assertThat(item.name).as("name").isEqualTo(expectedName); - assertThat(item.quality).as("quality").isEqualTo(expectedQuality); - assertThat(item.sellIn).as("sellIn").isEqualTo(expectedSellIn); + @Feature("Once the sell by date has passed, Quality degrades twice as fast") + @ParameterizedTest(name = "sellIn: {arguments}") + @ValueSource(ints = {0, 1}) + void shouldTheDegradeQualityFasterOnceSellDateIsPassed(int sellIn) { + // given + val initialQuality = nextInt(3, 50); + GildedRose app = prepareApp(new Item("foo", sellIn, initialQuality)); + + // when + app.updateQuality(); + + // then + final Item item = app.items[0]; + assertItem(item, "foo", initialQuality - 2, -2); } - - private static GildedRose prepareApp(Item... items) { - return new GildedRose(items); - } - - } diff --git a/Java/src/test/java/com/gildedrose/TestHelper.java b/Java/src/test/java/com/gildedrose/TestHelper.java new file mode 100644 index 00000000..1601b374 --- /dev/null +++ b/Java/src/test/java/com/gildedrose/TestHelper.java @@ -0,0 +1,19 @@ +package com.gildedrose; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public final class TestHelper { + + private TestHelper(){} + + static GildedRose prepareApp(Item... items) { + return new GildedRose(items); + } + + static void assertItem(Item item, String expectedName, int expectedQuality, int expectedSellIn) { + assertThat(item).as("item").isNotNull(); + assertThat(item.name).as("name").isEqualTo(expectedName); + assertThat(item.quality).as("quality").isEqualTo(expectedQuality); + assertThat(item.sellIn).as("sellIn").isEqualTo(expectedSellIn); + } +}