mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-18 07:51:29 +00:00
Create class for backstage pass items
This commit is contained in:
parent
3bd5d5ffdc
commit
58d66c7770
@ -0,0 +1,31 @@
|
|||||||
|
package com.gildedrose.items;
|
||||||
|
|
||||||
|
import com.gildedrose.Quality;
|
||||||
|
import com.gildedrose.SellIn;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class BackstagePassItem extends GildedRoseItem {
|
||||||
|
|
||||||
|
public BackstagePassItem(SellIn sellIn, Quality quality, boolean conjured) {
|
||||||
|
super("Backstage passes to a TAFKAL80ETC concert", sellIn, quality, conjured);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Quality nextQuality(Quality previous) {
|
||||||
|
Quality nextQuality = previous.copy();
|
||||||
|
if (this.getSellIn().isOver()) {
|
||||||
|
nextQuality.setValue(0);
|
||||||
|
return nextQuality;
|
||||||
|
}
|
||||||
|
|
||||||
|
nextQuality.increment();
|
||||||
|
if (this.getSellIn().daysLeftUntilIsOverAreLessThan(11)) {
|
||||||
|
nextQuality.increment();
|
||||||
|
}
|
||||||
|
if (this.getSellIn().daysLeftUntilIsOverAreLessThan(6)) {
|
||||||
|
nextQuality.increment();
|
||||||
|
}
|
||||||
|
return nextQuality;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,54 @@
|
|||||||
|
package com.gildedrose.items;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import com.gildedrose.Quality;
|
||||||
|
import com.gildedrose.SellIn;
|
||||||
|
import org.junit.jupiter.api.Nested;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class BackstagePassItemTest {
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
class nextQuality {
|
||||||
|
@Test
|
||||||
|
void should_increment_quality_by_one() {
|
||||||
|
BackstagePassItem item =
|
||||||
|
new BackstagePassItem(SellIn.create(20), Quality.create(0), Boolean.FALSE);
|
||||||
|
|
||||||
|
Quality nextQuality = item.nextQuality(item.getQuality());
|
||||||
|
|
||||||
|
assertThat(nextQuality).isEqualTo(Quality.create(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_increment_quality_by_two_if_less_than_ten_days_to_sell() {
|
||||||
|
BackstagePassItem item =
|
||||||
|
new BackstagePassItem(SellIn.create(10), Quality.create(0), Boolean.FALSE);
|
||||||
|
|
||||||
|
Quality nextQuality = item.nextQuality(item.getQuality());
|
||||||
|
|
||||||
|
assertThat(nextQuality).isEqualTo(Quality.create(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_increment_quality_by_three_if_less_than_five_days_to_sell() {
|
||||||
|
BackstagePassItem item =
|
||||||
|
new BackstagePassItem(SellIn.create(5), Quality.create(0), Boolean.FALSE);
|
||||||
|
|
||||||
|
Quality nextQuality = item.nextQuality(item.getQuality());
|
||||||
|
|
||||||
|
assertThat(nextQuality).isEqualTo(Quality.create(3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_set_quality_to_zero_if_sell_is_over() {
|
||||||
|
BackstagePassItem item =
|
||||||
|
new BackstagePassItem(SellIn.create(0), Quality.create(10), Boolean.FALSE);
|
||||||
|
|
||||||
|
Quality nextQuality = item.nextQuality(item.getQuality());
|
||||||
|
|
||||||
|
assertThat(nextQuality).isEqualTo(Quality.create(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user