mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
WIP: Once the sell by date has passed, Quality degrades twice as fast
This commit is contained in:
parent
85708d30f5
commit
e808c6c233
20
Java/pom.xml
20
Java/pom.xml
@ -18,9 +18,23 @@
|
||||
<aspectj.version>1.9.4</aspectj.version>
|
||||
<assertj.version>3.11.1</assertj.version>
|
||||
<junit.jupiter.version>5.4.2</junit.jupiter.version>
|
||||
<lombok.version>1.18.8</lombok.version>
|
||||
<commons-lang3.version>3.8.1</commons-lang3.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>${commons-lang3.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
@ -74,9 +88,9 @@
|
||||
</configuration>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjweaver</artifactId>
|
||||
<version>${aspectj.version}</version>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjweaver</artifactId>
|
||||
<version>${aspectj.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
19
Java/src/test/java/com/gildedrose/TestHelper.java
Normal file
19
Java/src/test/java/com/gildedrose/TestHelper.java
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user