Guard quality in constructor

This commit is contained in:
Ibrahim Dogrusoz 2023-05-28 16:44:16 +02:00
parent 0c8aa134b8
commit 3377402d31
2 changed files with 17 additions and 1 deletions

View File

@ -4,11 +4,22 @@ import com.gildedrose.Item;
public class BaseItem { public class BaseItem {
private final Item item; private final Item item;
private final static int MIN_QUALITY = 0; protected final static int MIN_QUALITY = 0;
public BaseItem(Item item) { public BaseItem(Item item) {
validate(item);
this.item = item; this.item = item;
} }
private void validate(Item item) {
if(item.quality < MIN_QUALITY) {
throw new IllegalArgumentException(
"Item has a quality out of accepted boundaries. Minimum acceptable quality is "
+ " but received "
+ item.quality
);
}
}
public int getSellIn() { public int getSellIn() {
return item.sellIn; return item.sellIn;
} }

View File

@ -72,4 +72,9 @@ class BaseItemTest {
assertEquals(0, testItem.getQuality()); assertEquals(0, testItem.getQuality());
} }
@Test
void givenAnItemWithLessThanMinimumQuality_whenCreated_thenAnExceptionIsThrown() {
assertThrows(IllegalArgumentException.class, () -> new BaseItem(new Item("test_item", -1, BaseItem.MIN_QUALITY - 1)));
}
} }