mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +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