mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 06:21:29 +00:00
Add integration tests for current requirements
This commit is contained in:
parent
9c5090521c
commit
462d333bc5
@ -7,11 +7,123 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
void foo() {
|
||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals("fixme", app.items[0].name);
|
||||
void givenItem_whenExpiryDateApproaches_thenSellInAndQualityDecreases() {
|
||||
int defaultItemSellIn = 10;
|
||||
int defaultItemQuality = 20;
|
||||
int agedBrieSellIn = 2;
|
||||
int agedBrieQuality = 0;
|
||||
int backstagePassSellIn = 15;
|
||||
int backstagePassQuality = 20;
|
||||
GildedRose app = updateQuality(
|
||||
createDefaultItem(defaultItemSellIn, defaultItemQuality),
|
||||
createAgedBrieItem(agedBrieSellIn, agedBrieQuality),
|
||||
createBackstagePass(backstagePassSellIn, backstagePassQuality)
|
||||
);
|
||||
|
||||
assertEquals(defaultItemSellIn - 1, app.items[0].sellIn);
|
||||
assertEquals(defaultItemQuality - 1, app.items[0].quality);
|
||||
assertEquals(agedBrieSellIn - 1, app.items[1].sellIn);
|
||||
assertEquals(backstagePassSellIn - 1, app.items[2].sellIn);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenItemWithExpiredDate_whenUpdateQuality_thenQualityDecreasesTwiceAsFast() {
|
||||
int quality = 5;
|
||||
GildedRose app = updateQuality(createDefaultItem(0, 5));
|
||||
|
||||
assertEquals(quality - 2, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenItemWithExpiredDate_whenUpdateQuality_thenQualityIsNeverNegative() {
|
||||
GildedRose app = updateQuality(createDefaultItem(0, 1));
|
||||
|
||||
assertEquals(0, app.items[0].quality);
|
||||
|
||||
app.updateQuality();
|
||||
|
||||
assertEquals(0, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenAgedBrieWithWithHighQuality_whenUpdateQuality_thenQualityIsNeverAboveMaximum() {
|
||||
GildedRose app = updateQuality(createAgedBrieItem(10, 49));
|
||||
|
||||
assertEquals(50, app.items[0].quality);
|
||||
|
||||
app.updateQuality();
|
||||
|
||||
assertEquals(50, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenAgedBrieOrBackstagePass_whenUpdateQuality_thenQualityIncreases() {
|
||||
int agedBrieQuality = 12;
|
||||
int backstagePassQuality = 8;
|
||||
GildedRose app = updateQuality(
|
||||
createAgedBrieItem(10, agedBrieQuality),
|
||||
createBackstagePass(17, backstagePassQuality)
|
||||
);
|
||||
|
||||
assertEquals(agedBrieQuality + 1, app.items[0].quality);
|
||||
assertEquals(backstagePassQuality + 1, app.items[1].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenBackstagePassLessThan10sellInDays_whenUpdateQuality_thenQualityIncreasesDouble() {
|
||||
int quality = 8;
|
||||
GildedRose app = updateQuality(createBackstagePass(9, quality));
|
||||
|
||||
assertEquals(quality + 2, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenBackstagePassLessThan5sellInDays_whenUpdateQuality_thenQualityIncreasesWithFactor3() {
|
||||
int quality = 7;
|
||||
GildedRose app = updateQuality(createBackstagePass(3, quality));
|
||||
|
||||
assertEquals(quality + 3, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenBackstagePassBeyondSellInDays_whenUpdateQuality_thenQualityIsZero() {
|
||||
int quality = 13;
|
||||
GildedRose app = updateQuality(createBackstagePass(0, quality));
|
||||
|
||||
assertEquals(0, app.items[0].quality);
|
||||
|
||||
app.updateQuality();
|
||||
|
||||
assertEquals(0, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLegendaryItem_whenUpdateQuality_thenQualityDoesNotChange() {
|
||||
int quality = 34;
|
||||
GildedRose app = updateQuality(createLegendaryItem(quality));
|
||||
|
||||
assertEquals(quality, app.items[0].quality);
|
||||
}
|
||||
|
||||
private GildedRose updateQuality(Item... items) {
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
return app;
|
||||
}
|
||||
|
||||
private Item createDefaultItem(int sellIn, int quality) {
|
||||
return new Item("+5 Dexterity Vest", sellIn, quality);
|
||||
}
|
||||
|
||||
private Item createAgedBrieItem(int sellIn, int quality) {
|
||||
return new Item("Aged Brie", sellIn, quality);
|
||||
}
|
||||
|
||||
private Item createBackstagePass(int sellIn, int quality) {
|
||||
return new Item("Backstage passes to a TAFKAL80ETC concert", sellIn, quality);
|
||||
}
|
||||
|
||||
private Item createLegendaryItem(int quality) {
|
||||
return new Item("Sulfuras, Hand of Ragnaros", 10, quality);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user