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] "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;
-[ ] 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 increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but
-[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.
## Technical Issues, with a balanced priority

View File

@ -3,13 +3,14 @@ package com.gildedrose;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
public class GildedRoseTest {
@Test
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);
app.updateQuality();
assertEquals("foo", app.items[0].name);
@ -17,8 +18,8 @@ public class GildedRoseTest {
@Test
@DisplayName("At the end of each day our system lowers both values for every item")
public void shouldLowerBothValues(){
Item[] items = new Item[] { TestHelper.getItem("foobar", 2, 2) };
public void shouldLowerBothValues() {
Item[] items = new Item[]{TestHelper.getItem("foobar", 2, 2)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(1, app.items[0].quality);
@ -27,8 +28,8 @@ public class GildedRoseTest {
@Test
@DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast")
public void shouldDowngradeTwiceAsFastAfterSellDate(){
Item[] items = new Item[] { TestHelper.getItem("foobar", 1, 5) };
public void shouldDowngradeTwiceAsFastAfterSellDate() {
Item[] items = new Item[]{TestHelper.getItem("foobar", 1, 5)};
GildedRose app = new GildedRose(items);
//day 1, drop by 1
@ -60,7 +61,7 @@ public class GildedRoseTest {
@Test
@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)};
GildedRose app = new GildedRose(items);
@ -75,7 +76,7 @@ public class GildedRoseTest {
@Test
@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)};
GildedRose app = new GildedRose(items);
@ -91,7 +92,7 @@ public class GildedRoseTest {
//Sulfuras, Hand of Ragnaros
@Test
@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)};
GildedRose app = new GildedRose(items);
@ -108,7 +109,7 @@ public class GildedRoseTest {
@Test
@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)};
GildedRose app = new GildedRose(items);
@ -123,4 +124,40 @@ public class GildedRoseTest {
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);
}
}
}