mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-04 09:11:39 +00:00
refactor conditional to polymorphism - AgedBrie
This commit is contained in:
parent
ddd61f5304
commit
d9d0bb2060
@ -1,6 +1,9 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import com.gildedrose.item.Item;
|
||||
import com.gildedrose.core.InventoryRuleEngine;
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
import com.gildedrose.domain.item.ItemAdapterSimpleFactory;
|
||||
|
||||
class GildedRose {
|
||||
|
||||
@ -28,48 +31,33 @@ class GildedRose {
|
||||
}
|
||||
|
||||
private void doUpdateQuality(Item item) {
|
||||
|
||||
boolean isAgedBrie = item.name.equals(AGED_BRIE);
|
||||
boolean isBackstagePasses = item.name.equals(BACKSTAGE_PASSES);
|
||||
boolean isSulfuras = item.name.equals(SULFURAS);
|
||||
ItemAdapter itemAdapter = ItemAdapterSimpleFactory.createItemAdapter(item);
|
||||
|
||||
if (isAgedBrie) {
|
||||
// processing quality
|
||||
if (item.quality < MAXIMUM_QUALITY) {
|
||||
increaseQuality(item);
|
||||
}
|
||||
|
||||
// processing sell date
|
||||
decreaseDay(item);
|
||||
|
||||
// processing sell date
|
||||
if (isExpired(item)) {
|
||||
if (item.quality < MAXIMUM_QUALITY) {
|
||||
increaseQuality(item);
|
||||
}
|
||||
}
|
||||
InventoryRuleEngine.processUpdateInventoryRule(itemAdapter);
|
||||
} else if (isBackstagePasses) {
|
||||
// processing quality
|
||||
if (item.quality < MAXIMUM_QUALITY) {
|
||||
if (shouldIncreaseQuality(item)) {
|
||||
increaseQuality(item);
|
||||
|
||||
// processing sell date
|
||||
if (item.sellIn < SELL_IN_DAY11) {
|
||||
if (item.quality < MAXIMUM_QUALITY) {
|
||||
if (shouldIncreaseQuality(item)) {
|
||||
increaseQuality(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (item.sellIn < SELL_IN_DAY6) {
|
||||
if (item.quality < MAXIMUM_QUALITY) {
|
||||
if (shouldIncreaseQuality(item)) {
|
||||
increaseQuality(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// processing sell date
|
||||
decreaseDay(item);
|
||||
|
||||
// processing sell date
|
||||
if (isExpired(item)) {
|
||||
item.quality = MINIMUM_QUALITY;
|
||||
}
|
||||
@ -78,23 +66,28 @@ class GildedRose {
|
||||
|
||||
} else {
|
||||
//standard item
|
||||
if (item.quality > MINIMUM_QUALITY) {
|
||||
if (shouldDecreaseQuality(item)) {
|
||||
decreaseQuality(item);
|
||||
}
|
||||
|
||||
// processing sell date
|
||||
decreaseDay(item);
|
||||
|
||||
// processing sell date
|
||||
if (isExpired(item)) {
|
||||
// processing quality
|
||||
if (item.quality > MINIMUM_QUALITY) {
|
||||
if (shouldDecreaseQuality(item)) {
|
||||
decreaseQuality(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldDecreaseQuality(Item item) {
|
||||
return item.quality > MINIMUM_QUALITY;
|
||||
}
|
||||
|
||||
private boolean shouldIncreaseQuality(Item item) {
|
||||
return item.quality < MAXIMUM_QUALITY;
|
||||
}
|
||||
|
||||
private void decreaseDay(Item item) {
|
||||
item.sellIn = item.sellIn - 1;
|
||||
}
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package com.gildedrose.application.agedbrie;
|
||||
|
||||
import com.gildedrose.core.rules.UpdateInventoryTemplateRule;
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
|
||||
public class AgedBrieRule extends UpdateInventoryTemplateRule {
|
||||
|
||||
@Override
|
||||
protected boolean canSubtractSellIn(final ItemAdapter itemAdapter) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getQualityFactor(final boolean isExpired, final ItemAdapter itemAdapter) {
|
||||
return isExpired ? 2 : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canIncreaseQuality(final ItemAdapter itemAdapter) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canDecreaseQuality(final ItemAdapter itemAdapter) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package com.gildedrose.core;
|
||||
|
||||
import com.gildedrose.application.agedbrie.AgedBrieRule;
|
||||
import com.gildedrose.core.rules.UpdateInventoryTemplateRule;
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
import com.gildedrose.domain.item.ItemType;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class InventoryRuleEngine {
|
||||
|
||||
private static final Map<ItemType, UpdateInventoryTemplateRule> updateInventoryRules = new HashMap<>(){{
|
||||
put(ItemType.AGEG_BRIE, new AgedBrieRule());
|
||||
}};
|
||||
|
||||
public static void processUpdateInventoryRule(ItemAdapter itemAdapter) {
|
||||
if (null != updateInventoryRules.get(itemAdapter.getItemType())) {
|
||||
updateInventoryRules.get(itemAdapter.getItemType()).processItem(itemAdapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
package com.gildedrose.core.rules;
|
||||
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
|
||||
public abstract class UpdateInventoryTemplateRule {
|
||||
|
||||
final int MINIMUM_QUALITY = 0;
|
||||
final int MAXIMUM_QUALITY = 50;
|
||||
final int SELL_IN_EXPIRED = 0;
|
||||
final int SELL_IN_UNIT = 1;
|
||||
|
||||
public final void processItem(final ItemAdapter itemAdapter) {
|
||||
|
||||
if (canSubtractSellIn(itemAdapter)) {
|
||||
subtractSellIn(itemAdapter);
|
||||
}
|
||||
|
||||
boolean isExpired = isExpired(itemAdapter);
|
||||
int qualityFactor = getQualityFactor(isExpired, itemAdapter);
|
||||
|
||||
if (canIncreaseQuality(itemAdapter)) {
|
||||
increaseQuality(itemAdapter, qualityFactor);
|
||||
}
|
||||
|
||||
if (canDecreaseQuality(itemAdapter)) {
|
||||
decreaseQuality(itemAdapter, qualityFactor);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract boolean canSubtractSellIn(final ItemAdapter itemAdapter);
|
||||
protected abstract int getQualityFactor(final boolean isExpired, final ItemAdapter itemAdapter);
|
||||
protected abstract boolean canIncreaseQuality(final ItemAdapter itemAdapter);
|
||||
protected abstract boolean canDecreaseQuality(final ItemAdapter itemAdapter);
|
||||
|
||||
private void subtractSellIn(final ItemAdapter itemAdapter) {
|
||||
itemAdapter.getItem().sellIn -= SELL_IN_UNIT;
|
||||
}
|
||||
|
||||
private boolean isExpired(final ItemAdapter itemAdapter) {
|
||||
return itemAdapter.getItem().sellIn < SELL_IN_EXPIRED;
|
||||
}
|
||||
|
||||
private void increaseQuality(final ItemAdapter itemAdapter, final int qualityFactor) {
|
||||
int increasedQuality = itemAdapter.getItem().quality + qualityFactor;
|
||||
itemAdapter.getItem().quality = Math.min(increasedQuality, MAXIMUM_QUALITY);
|
||||
}
|
||||
|
||||
private void decreaseQuality(final ItemAdapter itemAdapter, final int qualityFactor) {
|
||||
int decreasedQuality = itemAdapter.getItem().quality - qualityFactor;
|
||||
itemAdapter.getItem().quality = Math.min(decreasedQuality, MINIMUM_QUALITY);
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package com.gildedrose.item;
|
||||
package com.gildedrose.domain.item;
|
||||
|
||||
public class Item {
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
package com.gildedrose.domain.item;
|
||||
|
||||
public class ItemAdapter {
|
||||
private final Item item;
|
||||
private final ItemType itemType;
|
||||
|
||||
public ItemAdapter(ItemType itemType, Item item) {
|
||||
this.itemType = itemType;
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
public Item getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
public ItemType getItemType() {
|
||||
return itemType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return item.toString();
|
||||
}
|
||||
|
||||
public String toStringFull() { return this.toString() + ", " + itemType.getName(); }
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package com.gildedrose.domain.item;
|
||||
|
||||
public final class ItemAdapterSimpleFactory {
|
||||
|
||||
static final int SULFURAS_DEFAULT_QUALITY = 80;
|
||||
|
||||
public static ItemAdapter createItemAdapter(Item item) {
|
||||
ItemType itemType = ItemType.findByValue(item.name);
|
||||
return switch (itemType) {
|
||||
case AGEG_BRIE -> createAgedBrie(item);
|
||||
case BACKSTAGE_PASSES -> createBackStagePasses(item);
|
||||
case SULFURAS -> createSulfuras(item);
|
||||
default -> createStandardItem(item);
|
||||
};
|
||||
}
|
||||
|
||||
private static ItemAdapter createAgedBrie(Item item) {
|
||||
return new ItemAdapter(ItemType.AGEG_BRIE, item);
|
||||
}
|
||||
|
||||
private static ItemAdapter createBackStagePasses(Item item) {
|
||||
return new ItemAdapter(ItemType.BACKSTAGE_PASSES, item);
|
||||
}
|
||||
|
||||
private static ItemAdapter createSulfuras(Item item) {
|
||||
return new ItemAdapter(ItemType.SULFURAS, new Item(item.name, item.sellIn, SULFURAS_DEFAULT_QUALITY));
|
||||
}
|
||||
|
||||
private static ItemAdapter createStandardItem(Item item) {
|
||||
return new ItemAdapter(ItemType.STANDARD, item);
|
||||
}
|
||||
}
|
||||
29
Java/src/main/java/com/gildedrose/domain/item/ItemType.java
Normal file
29
Java/src/main/java/com/gildedrose/domain/item/ItemType.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.gildedrose.domain.item;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public enum ItemType {
|
||||
|
||||
STANDARD("Standard item"),
|
||||
AGEG_BRIE("Aged Brie"),
|
||||
BACKSTAGE_PASSES("Backstage passes to a TAFKAL80ETC concert"),
|
||||
SULFURAS ("Sulfuras, Hand of Ragnaros")
|
||||
;
|
||||
|
||||
private final String name;
|
||||
|
||||
ItemType(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public static ItemType findByValue(String itemName) {
|
||||
return Arrays.stream(values())
|
||||
.filter(itemType -> itemType.getName().equalsIgnoreCase(itemName))
|
||||
.findFirst()
|
||||
.orElse(STANDARD);
|
||||
}
|
||||
|
||||
public String getName(){
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import com.gildedrose.item.Item;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class AgedBrieTest {
|
||||
|
||||
@Test
|
||||
void agedBrieQualityIncreasesByOne() {
|
||||
//given
|
||||
Item agedBrie = new Item("Aged Brie", 5, 2);
|
||||
Item[] items = new Item[] {agedBrie};
|
||||
|
||||
//when
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
|
||||
//then
|
||||
assertEquals(4, app.items[0].sellIn);
|
||||
assertEquals(3, app.items[0].quality);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import com.gildedrose.item.Item;
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import com.gildedrose.item.Item;
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import com.gildedrose.item.Item;
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
@ -10,7 +10,7 @@ class SulfurasTest {
|
||||
@Test
|
||||
void sulfurasNeverChanges() {
|
||||
//given
|
||||
Item sulfuras = new Item("Sulfuras, Hand of Ragnaros", 0, 80);
|
||||
Item sulfuras = new Item("Sulfuras, Hand of Ragnaros", -1, 80);
|
||||
Item[] items = new Item[] {sulfuras};
|
||||
|
||||
//when
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
package com.gildedrose.application.aggedbrie;
|
||||
|
||||
import com.gildedrose.application.agedbrie.AgedBrieRule;
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
import com.gildedrose.domain.item.ItemType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class AgedBrieRuleTest {
|
||||
|
||||
@Test
|
||||
void agedBrieQualityIncreasesByOne() {
|
||||
//given
|
||||
Item agedBrie = new Item("Aged Brie", 5, 2);
|
||||
ItemAdapter agedBrieAdapter = new ItemAdapter(ItemType.AGEG_BRIE, agedBrie);
|
||||
AgedBrieRule agedBrieRule = new AgedBrieRule();
|
||||
|
||||
//when
|
||||
agedBrieRule.processItem(agedBrieAdapter);
|
||||
|
||||
//then
|
||||
assertEquals(4, agedBrieAdapter.getItem().sellIn);
|
||||
assertEquals(3, agedBrieAdapter.getItem().quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void agedBrieQualityIncreasesByTwoWhenExpired() {
|
||||
//given
|
||||
Item agedBrie = new Item("Aged Brie", 0, 2);
|
||||
ItemAdapter agedBrieAdapter = new ItemAdapter(ItemType.AGEG_BRIE, agedBrie);
|
||||
AgedBrieRule agedBrieRule = new AgedBrieRule();
|
||||
|
||||
//when
|
||||
agedBrieRule.processItem(agedBrieAdapter);
|
||||
|
||||
//then
|
||||
assertEquals(-1, agedBrieAdapter.getItem().sellIn);
|
||||
assertEquals(4, agedBrieAdapter.getItem().quality);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.gildedrose.core;
|
||||
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
import com.gildedrose.domain.item.ItemType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class InventoryRuleEngineTest {
|
||||
|
||||
@Test
|
||||
void shouldProcessAgedBrieRule() {
|
||||
//given
|
||||
ItemAdapter itemAdapter = new ItemAdapter(ItemType.AGEG_BRIE, new Item("Aged Brie", 3, 0));
|
||||
|
||||
//when
|
||||
InventoryRuleEngine.processUpdateInventoryRule(itemAdapter);
|
||||
|
||||
//then
|
||||
assertEquals(2, itemAdapter.getItem().sellIn);
|
||||
assertEquals(1, itemAdapter.getItem().quality);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
package com.gildedrose.core.rules;
|
||||
|
||||
import com.gildedrose.domain.item.Item;
|
||||
import com.gildedrose.domain.item.ItemAdapter;
|
||||
import com.gildedrose.domain.item.ItemType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class UpdateInventoryTemplateRuleTest {
|
||||
|
||||
@Test
|
||||
void processItemCorrectly() {
|
||||
//given
|
||||
UpdateInventoryTemplateRule testRule = createTestRule(true, true, true);
|
||||
ItemAdapter itemAdapter = new ItemAdapter(ItemType.AGEG_BRIE, new Item("Just a test item", 3, 0));
|
||||
//when
|
||||
testRule.processItem(itemAdapter);
|
||||
|
||||
//then
|
||||
assertEquals(2, itemAdapter.getItem().sellIn);
|
||||
assertEquals(0, itemAdapter.getItem().quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void processItemCorrectlyWhenIsExpired() {
|
||||
//given
|
||||
UpdateInventoryTemplateRule testRule = createTestRule(true, true, true);
|
||||
ItemAdapter itemAdapter = new ItemAdapter(ItemType.AGEG_BRIE, new Item("Just a test item", 0, 2));
|
||||
//when
|
||||
testRule.processItem(itemAdapter);
|
||||
|
||||
//then
|
||||
assertEquals(-1, itemAdapter.getItem().sellIn);
|
||||
assertEquals(0, itemAdapter.getItem().quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void processItemCorrectlyWhenNoChangesAreAllowed() {
|
||||
//given
|
||||
UpdateInventoryTemplateRule testRule = createTestRule(false, false, false);
|
||||
ItemAdapter itemAdapter = new ItemAdapter(ItemType.AGEG_BRIE, new Item("Just a test item", 10, 2));
|
||||
//when
|
||||
testRule.processItem(itemAdapter);
|
||||
|
||||
//then
|
||||
assertEquals(10, itemAdapter.getItem().sellIn);
|
||||
assertEquals(2, itemAdapter.getItem().quality);
|
||||
}
|
||||
|
||||
private static UpdateInventoryTemplateRule createTestRule(boolean canSubtractSellIn,
|
||||
boolean canIncreaseQuality,
|
||||
boolean canDecreaseQuality) {
|
||||
return new UpdateInventoryTemplateRule() {
|
||||
@Override
|
||||
protected boolean canSubtractSellIn(ItemAdapter itemAdapter) {
|
||||
return canSubtractSellIn;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getQualityFactor(boolean isExpired, ItemAdapter itemAdapter) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canIncreaseQuality(ItemAdapter itemAdapter) {
|
||||
return canIncreaseQuality;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canDecreaseQuality(ItemAdapter itemAdapter) {
|
||||
return canDecreaseQuality;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package com.gildedrose.domain.item;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class ItemAdapterSimpleFactoryTest {
|
||||
|
||||
@Test
|
||||
void shouldCreateAgedBrieItemAdapter(){
|
||||
//given
|
||||
Item agedBrie = new Item("Aged Brie", 2, 0);
|
||||
//when
|
||||
ItemAdapter result = ItemAdapterSimpleFactory.createItemAdapter(agedBrie);
|
||||
//then
|
||||
assertEquals(agedBrie.name, result.getItem().name);
|
||||
assertEquals(agedBrie.sellIn, result.getItem().sellIn);
|
||||
assertEquals(agedBrie.quality, result.getItem().quality);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldCreateBackstagePassesItemAdapter(){
|
||||
//given
|
||||
Item backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20);
|
||||
//when
|
||||
ItemAdapter result = ItemAdapterSimpleFactory.createItemAdapter(backstagePasses);
|
||||
//then
|
||||
assertEquals(backstagePasses.name, result.getItem().name);
|
||||
assertEquals(backstagePasses.sellIn, result.getItem().sellIn);
|
||||
assertEquals(backstagePasses.quality, result.getItem().quality);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldCreateSulfurasItemAdapter(){
|
||||
//given
|
||||
Item sulfuras = new Item("Sulfuras, Hand of Ragnaros", 0, 80);
|
||||
//when
|
||||
ItemAdapter result = ItemAdapterSimpleFactory.createItemAdapter(sulfuras);
|
||||
//then
|
||||
assertEquals(sulfuras.name, result.getItem().name);
|
||||
assertEquals(sulfuras.sellIn, result.getItem().sellIn);
|
||||
assertEquals(sulfuras.quality, result.getItem().quality);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldCreateStandardItemAdapter(){
|
||||
//given
|
||||
Item standardItem = new Item("Elixir of the Mongoose", 5, 7);
|
||||
//when
|
||||
ItemAdapter result = ItemAdapterSimpleFactory.createItemAdapter(standardItem);
|
||||
//then
|
||||
assertEquals(standardItem.name, result.getItem().name);
|
||||
assertEquals(standardItem.sellIn, result.getItem().sellIn);
|
||||
assertEquals(standardItem.quality, result.getItem().quality);
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
package com.gildedrose.domain.item;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class ItemTypeTest {
|
||||
|
||||
@Test
|
||||
void findByValue_AgedBrie() {
|
||||
// given
|
||||
String agedBrie = "Aged Brie";
|
||||
//when
|
||||
ItemType result = ItemType.findByValue(agedBrie);
|
||||
//then
|
||||
assertEquals(ItemType.AGEG_BRIE, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByValue_BackStagePasses() {
|
||||
// given
|
||||
String agedBrie = "Backstage passes to a TAFKAL80ETC concert";
|
||||
//when
|
||||
ItemType result = ItemType.findByValue(agedBrie);
|
||||
//then
|
||||
assertEquals(ItemType.BACKSTAGE_PASSES, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByValue_Sulfuras() {
|
||||
// given
|
||||
String agedBrie = "Sulfuras, Hand of Ragnaros";
|
||||
//when
|
||||
ItemType result = ItemType.findByValue(agedBrie);
|
||||
//then
|
||||
assertEquals(ItemType.SULFURAS, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByValue_StandardItem() {
|
||||
// given
|
||||
String agedBrie = "Elixir of the Mongoose";
|
||||
//when
|
||||
ItemType result = ItemType.findByValue(agedBrie);
|
||||
//then
|
||||
assertEquals(ItemType.STANDARD, result);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user