From fdd930f5cdb7f051511afadada16f6f20a7513ab Mon Sep 17 00:00:00 2001 From: rverlind Date: Tue, 5 Dec 2023 22:26:27 +0100 Subject: [PATCH] Extract the legendary (Sulfuras) Gilded Rose item behaviour --- .../gildedrose/items/GildedRoseItemFactory.java | 5 +++-- .../items/LegendaryGildedRoseItem.java | 16 ++++++++++++++++ .../test/java/com/gildedrose/GildedRoseTest.java | 8 ++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 Java/src/main/java/com/gildedrose/items/LegendaryGildedRoseItem.java diff --git a/Java/src/main/java/com/gildedrose/items/GildedRoseItemFactory.java b/Java/src/main/java/com/gildedrose/items/GildedRoseItemFactory.java index 65486c4f..07ae33ae 100644 --- a/Java/src/main/java/com/gildedrose/items/GildedRoseItemFactory.java +++ b/Java/src/main/java/com/gildedrose/items/GildedRoseItemFactory.java @@ -13,10 +13,11 @@ public class GildedRoseItemFactory { static final Pattern CONJURED_ITEM = Pattern.compile("Conjured.*", CASE_INSENSITIVE); public static GildedRoseItem create(Item item) { - if (LEGENDARY_NAME_PATTERN.matcher(item.name).matches() - || AGING_ITEM.matcher(item.name).matches() + if (AGING_ITEM.matcher(item.name).matches() || CONJURED_ITEM.matcher(item.name).matches()) { return new NonStandardGildedRoseItem(item); + } else if (LEGENDARY_NAME_PATTERN.matcher(item.name).matches()) { + return new LegendaryGildedRoseItem(item); } else { return new StandardGildedRoseItem(item); } diff --git a/Java/src/main/java/com/gildedrose/items/LegendaryGildedRoseItem.java b/Java/src/main/java/com/gildedrose/items/LegendaryGildedRoseItem.java new file mode 100644 index 00000000..75947094 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/items/LegendaryGildedRoseItem.java @@ -0,0 +1,16 @@ +package com.gildedrose.items; + +import com.gildedrose.Item; + +public class LegendaryGildedRoseItem extends AbstractGildedRoseItem { + + public LegendaryGildedRoseItem(Item item) { + super(item); + + } + + @Override + public GildedRoseItem updateQuality() { + return this; + } +} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 1387f5c5..4ad7a140 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -42,14 +42,18 @@ class GildedRoseTest { @Test void updateQuality_standardItem_maxQuality50() { GildedRose app = createApp(createItem("standard", 10, 60)); - app.updateQuality(); + assertEquals(49, app.items[0].quality); } @Test void updateQuality_legendaryItem() { - fail("NYI"); + GildedRose app = createApp(createItem("Sulfuras, Hand of Ragnaros ", 10, 80)); + app.updateQuality(); + + assertEquals(10, app.items[0].sellIn); + assertEquals(80, app.items[0].quality); } @Test