Backstage passes unit test

This commit is contained in:
Sallah Kokaina 2019-11-01 17:15:02 +01:00
parent 6731e834ef
commit 6147b678a3
2 changed files with 49 additions and 12 deletions

View File

@ -16,8 +16,8 @@
-[x] The Quality of an item is never more than 50 -[x] The Quality of an item is never more than 50
-[x] "Sulfuras", being a legendary item, never has to be sold or decreases in Quality -[x] "Sulfuras", being a legendary item, never has to be sold or decreases in Quality
-[x] "Backstage passes", like aged brie, increases in Quality as its SellIn value approaches; -[x] "Backstage passes", like aged brie, increases in Quality as its SellIn value approaches;
-[ ] Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but -[x] Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but
-[ ] Quality drops to 0 after the concert -[x] Quality drops to 0 after the concert
-[ ] an item can never have its Quality increase above 50, however "Sulfuras" is a legendary item and as such its Quality is 80 and it never alters. -[ ] an item can never have its Quality increase above 50, however "Sulfuras" is a legendary item and as such its Quality is 80 and it never alters.
## Technical Issues, with a balanced priority ## Technical Issues, with a balanced priority

View File

@ -3,13 +3,14 @@ package com.gildedrose;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
public class GildedRoseTest { public class GildedRoseTest {
@Test @Test
public void foo() { public void foo() {
Item[] items = new Item[] { new Item("foo", 0, 0) }; Item[] items = new Item[]{new Item("foo", 0, 0)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
app.updateQuality(); app.updateQuality();
assertEquals("foo", app.items[0].name); assertEquals("foo", app.items[0].name);
@ -17,8 +18,8 @@ public class GildedRoseTest {
@Test @Test
@DisplayName("At the end of each day our system lowers both values for every item") @DisplayName("At the end of each day our system lowers both values for every item")
public void shouldLowerBothValues(){ public void shouldLowerBothValues() {
Item[] items = new Item[] { TestHelper.getItem("foobar", 2, 2) }; Item[] items = new Item[]{TestHelper.getItem("foobar", 2, 2)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
app.updateQuality(); app.updateQuality();
assertEquals(1, app.items[0].quality); assertEquals(1, app.items[0].quality);
@ -27,8 +28,8 @@ public class GildedRoseTest {
@Test @Test
@DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast") @DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast")
public void shouldDowngradeTwiceAsFastAfterSellDate(){ public void shouldDowngradeTwiceAsFastAfterSellDate() {
Item[] items = new Item[] { TestHelper.getItem("foobar", 1, 5) }; Item[] items = new Item[]{TestHelper.getItem("foobar", 1, 5)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
//day 1, drop by 1 //day 1, drop by 1
@ -60,7 +61,7 @@ public class GildedRoseTest {
@Test @Test
@DisplayName("\"Aged Brie\" actually increases in Quality by 2 the older it gets") @DisplayName("\"Aged Brie\" actually increases in Quality by 2 the older it gets")
public void shouldSeeAgedBrieIncreasedQualityDayByDay(){ public void shouldSeeAgedBrieIncreasedQualityDayByDay() {
Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 0)}; Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 0)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
@ -75,7 +76,7 @@ public class GildedRoseTest {
@Test @Test
@DisplayName("The Quality of an item is never more than 50") @DisplayName("The Quality of an item is never more than 50")
public void shouldNeverHaveQualityHigherThan50(){ public void shouldNeverHaveQualityHigherThan50() {
Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 49)}; Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 49)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
@ -91,7 +92,7 @@ public class GildedRoseTest {
//Sulfuras, Hand of Ragnaros //Sulfuras, Hand of Ragnaros
@Test @Test
@DisplayName("\"Sulfuras\", being a legendary item, never has to be sold or decreases in Quality") @DisplayName("\"Sulfuras\", being a legendary item, never has to be sold or decreases in Quality")
public void shouldNotChangeSulfurasSellInAndQualityValues(){ public void shouldNotChangeSulfurasSellInAndQualityValues() {
Item[] items = new Item[]{TestHelper.getItem("Sulfuras, Hand of Ragnaros", 0, 10)}; Item[] items = new Item[]{TestHelper.getItem("Sulfuras, Hand of Ragnaros", 0, 10)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
@ -108,7 +109,7 @@ public class GildedRoseTest {
@Test @Test
@DisplayName("\"Backstage passes\", like aged brie, increases in Quality as its SellIn value approaches") @DisplayName("\"Backstage passes\", like aged brie, increases in Quality as its SellIn value approaches")
public void shouldDo(){ public void shouldIncreaseQualityForBrieWhenSellInReduces() {
Item[] items = new Item[]{TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 5, 10)}; Item[] items = new Item[]{TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 5, 10)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
@ -123,4 +124,40 @@ public class GildedRoseTest {
assertEquals(3, app.items[0].sellIn); assertEquals(3, app.items[0].sellIn);
} }
} @Nested
@DisplayName("Backstage passes")
class BaskstagePasses{
@Test
@DisplayName("Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but")
public void shouldIncreaseQualityBasedOnSellIn() {
Item[] items = new Item[]{
TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 10, 10),
TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 5, 10)
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(12, app.items[0].quality);
assertEquals(9, app.items[0].sellIn);
assertEquals(13, app.items[1].quality);
assertEquals(4, app.items[1].sellIn);
}
@Test
@DisplayName("Quality drops to 0 after the concert")
public void shouldHaveQualityDroppingToZeroAfterConcert(){
Item[] items = new Item[]{
TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 0, 10)
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(0, app.items[0].quality);
assertEquals(-1, app.items[0].sellIn);
}
}
}