mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
more Backstage passes tests
This commit is contained in:
parent
11cea7714a
commit
41ebe9f98e
@ -2,11 +2,13 @@ package com.gildedrose;
|
|||||||
|
|
||||||
import io.qameta.allure.Feature;
|
import io.qameta.allure.Feature;
|
||||||
import io.qameta.allure.Story;
|
import io.qameta.allure.Story;
|
||||||
|
import lombok.val;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.jupiter.params.provider.ValueSource;
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
|
|
||||||
import static com.gildedrose.TestHelper.assertItem;
|
import static com.gildedrose.TestHelper.assertItem;
|
||||||
import static com.gildedrose.TestHelper.prepareApp;
|
import static com.gildedrose.TestHelper.prepareApp;
|
||||||
|
import static org.apache.commons.lang3.RandomUtils.nextInt;
|
||||||
|
|
||||||
|
|
||||||
@Story("\"Backstage passes\", like aged brie, increases in Quality as its SellIn value approaches;\n" +
|
@Story("\"Backstage passes\", like aged brie, increases in Quality as its SellIn value approaches;\n" +
|
||||||
@ -16,12 +18,63 @@ class GildedRoseBackstageTest {
|
|||||||
|
|
||||||
private static final String ITEM_NAME = "Backstage passes to a TAFKAL80ETC concert";
|
private static final String ITEM_NAME = "Backstage passes to a TAFKAL80ETC concert";
|
||||||
|
|
||||||
|
@Feature("Quality increases by 2 when there are 10 days or less")
|
||||||
|
@ParameterizedTest(name = "sellIn: {arguments}")
|
||||||
|
@ValueSource(ints = {10, 9, 8, 7, 6})
|
||||||
|
void shouldIncreaseQualityBy2WhenThereAre10DaysOrLess(int sellIn) {
|
||||||
|
// given
|
||||||
|
val initialQuality = nextInt(10, 40);
|
||||||
|
GildedRose app = prepareApp(new Item(ITEM_NAME, sellIn, initialQuality));
|
||||||
|
|
||||||
|
// when
|
||||||
|
app.updateQuality();
|
||||||
|
|
||||||
|
// then
|
||||||
|
final Item item = app.items[0];
|
||||||
|
assertItem(item, ITEM_NAME, sellIn - 1, initialQuality + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Feature("Quality increases by 3 when there are 5 days or less")
|
||||||
|
@ParameterizedTest(name = "sellIn: {arguments}")
|
||||||
|
@ValueSource(ints = {5, 4, 3, 2, 1})
|
||||||
|
void shouldIncreaseQualityBy32WhenThereAre5DaysOrLess(int sellIn) {
|
||||||
|
// given
|
||||||
|
val initialQuality = nextInt(10, 40);
|
||||||
|
GildedRose app = prepareApp(new Item(ITEM_NAME, sellIn, initialQuality));
|
||||||
|
|
||||||
|
// when
|
||||||
|
app.updateQuality();
|
||||||
|
|
||||||
|
// then
|
||||||
|
final Item item = app.items[0];
|
||||||
|
assertItem(item, ITEM_NAME, sellIn - 1, initialQuality + 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Feature("Quality drops to 0 after the concert")
|
@Feature("Quality drops to 0 after the concert")
|
||||||
@ParameterizedTest(name = "sellIn: {arguments}")
|
@ParameterizedTest(name = "sellIn: {arguments}")
|
||||||
@ValueSource(ints = {0, -1})
|
@ValueSource(ints = {0, -1})
|
||||||
void shouldDropQualityToZeroAfterTheConcert(int sellIn) {
|
void shouldDropQualityToZeroAfterTheConcert(int sellIn) {
|
||||||
// given
|
// given
|
||||||
GildedRose app = prepareApp(new Item(ITEM_NAME, sellIn, 10));
|
val initialQuality = nextInt(10, 40);
|
||||||
|
GildedRose app = prepareApp(new Item(ITEM_NAME, sellIn, initialQuality));
|
||||||
|
|
||||||
|
// when
|
||||||
|
app.updateQuality();
|
||||||
|
|
||||||
|
// then
|
||||||
|
final Item item = app.items[0];
|
||||||
|
assertItem(item, ITEM_NAME, sellIn - 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Feature("The Quality of an item is never more than 50")
|
||||||
|
@ParameterizedTest(name = "sellIn: {arguments}")
|
||||||
|
@ValueSource(ints = {0, -1})
|
||||||
|
void shouldNotIncreaseQualityAbove50(int sellIn) {
|
||||||
|
// given
|
||||||
|
val initialQuality = nextInt(10, 40);
|
||||||
|
GildedRose app = prepareApp(new Item(ITEM_NAME, sellIn, initialQuality));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user