mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 23:41:27 +00:00
Add unit tests for GildedRose item updateQuality method
This commit is contained in:
parent
76f229863b
commit
39b567780d
@ -1,17 +1,106 @@
|
|||||||
package com.gildedrose;
|
package com.gildedrose;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.api.Nested;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@DisplayName("Gilded Rose 테스트")
|
||||||
class GildedRoseTest {
|
class GildedRoseTest {
|
||||||
|
private Item[] items;
|
||||||
|
private GildedRose app;
|
||||||
|
|
||||||
@Test
|
private void setup(String name, int sellIn, int quality) {
|
||||||
void foo() {
|
items = new Item[]{new Item(name, sellIn, quality)};
|
||||||
Item[] items = new Item[]{new Item("fixme", 0, 0)};
|
app = new GildedRose(items);
|
||||||
GildedRose app = new GildedRose(items);
|
|
||||||
app.updateQuality();
|
|
||||||
assertEquals("fixme", app.items[0].name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int itemSellIn() {
|
||||||
|
return app.items[0].sellIn;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int itemQuality() {
|
||||||
|
return app.items[0].quality;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("일반 아이템은")
|
||||||
|
class StandardItem {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("하루가 지나면 Quality와 sellIn이 1씩 감소한다")
|
||||||
|
void qualityAndSellInDecrease() {
|
||||||
|
GildedRoseTest.this.setup("Standard Item", 10, 20);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(19);
|
||||||
|
assertThat(itemSellIn()).isEqualTo(9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("'Aged Brie'는")
|
||||||
|
class AgedBrie {
|
||||||
|
@Test
|
||||||
|
@DisplayName("하루가 지나면 Quality는 증가하지만 sellIn은 감소한다")
|
||||||
|
void qualityIncreasesSellInDecreases() {
|
||||||
|
GildedRoseTest.this.setup("Aged Brie", 10, 20);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(21);
|
||||||
|
assertThat(itemSellIn()).isEqualTo(9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("'Backstage passes'는")
|
||||||
|
class BackstagePasses {
|
||||||
|
@Test
|
||||||
|
@DisplayName("10일 초과 남았을 때 하루가 지나면 품질이 1 씩 증가하고 sellIn은 감소한다")
|
||||||
|
void quality1IncreasesSellInDecreasesMoreThan10Days() {
|
||||||
|
GildedRoseTest.this.setup("Backstage passes to a TAFKAL80ETC concert", 15, 20);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(21);
|
||||||
|
assertThat(itemSellIn()).isEqualTo(14);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("6일에서 10일 남았을 때 하루가 지나면 품질이 2 씩 증가하고 sellIn은 감소한다")
|
||||||
|
void quality2IncreasesSellInDecreases6to10Days() {
|
||||||
|
GildedRoseTest.this.setup("Backstage passes to a TAFKAL80ETC concert", 10, 20);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(22);
|
||||||
|
assertThat(itemSellIn()).isEqualTo(9);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("5일 미만 남았을 때 하루가 지나면 품질이 3 씩 증가하고 sellIn은 감소한다")
|
||||||
|
void quality3IncreasesSellInDecreasesLessThan6Days() {
|
||||||
|
GildedRoseTest.this.setup("Backstage passes to a TAFKAL80ETC concert", 5, 20);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(23);
|
||||||
|
assertThat(itemSellIn()).isEqualTo(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("콘서트가 끝나면(즉, sellIn이 0 이하가 되면) 품질은 0이된다.")
|
||||||
|
void qualityDropsToZeroAfterTheConcert() {
|
||||||
|
GildedRoseTest.this.setup("Backstage passes to a TAFKAL80ETC concert", 0, 20);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("'Sulfuras'는")
|
||||||
|
class Sulfuras {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("하루가 지나도 품질과 sellIn은 변하지 않는다")
|
||||||
|
void qualityAndSellInUnchanged() {
|
||||||
|
GildedRoseTest.this.setup("Sulfuras, Hand of Ragnaros", 10, 80);
|
||||||
|
app.updateQuality();
|
||||||
|
assertThat(itemQuality()).isEqualTo(80);
|
||||||
|
assertThat(itemSellIn()).isEqualTo(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user