From eb87a35411310245fccc67f9c8b1446f4272a6c6 Mon Sep 17 00:00:00 2001 From: Artur Goloyad Date: Sat, 25 Jul 2026 20:51:28 +0200 Subject: [PATCH] feat: implement ConjuredItemUpdater Conjured items degrade twice as fast: -2 before sell-by, -4 after, never below 0. Registered in ItemUpdaterFactory.Default() and resolved by the Conjured prefix rule, so the whole Conjured family is covered. The four Conjured spec tests go green. The ThirtyDays approval snapshot now shows the intended Conjured-only diff; it is re-approved in the next commit. Co-Authored-By: Claude Fable 5 --- csharp.xUnit/GildedRose/ConjuredItemUpdater.cs | 17 +++++++++++++++++ csharp.xUnit/GildedRose/ItemUpdaterFactory.cs | 1 + 2 files changed, 18 insertions(+) create mode 100644 csharp.xUnit/GildedRose/ConjuredItemUpdater.cs diff --git a/csharp.xUnit/GildedRose/ConjuredItemUpdater.cs b/csharp.xUnit/GildedRose/ConjuredItemUpdater.cs new file mode 100644 index 00000000..8d6499ef --- /dev/null +++ b/csharp.xUnit/GildedRose/ConjuredItemUpdater.cs @@ -0,0 +1,17 @@ +namespace GildedRoseKata; + +public class ConjuredItemUpdater : ItemUpdaterBase +{ + // Matched by prefix in ItemUpdaterFactory: handles every "Conjured..." item. + public override string Name => ItemUpdaterFactory.ConjuredPrefix; + + public override void Update(Item item) + { + item.Quality = ClampQuality(item.Quality - 2); + item.SellIn -= 1; + if (item.SellIn < 0) + { + item.Quality = ClampQuality(item.Quality - 2); + } + } +} diff --git a/csharp.xUnit/GildedRose/ItemUpdaterFactory.cs b/csharp.xUnit/GildedRose/ItemUpdaterFactory.cs index a6bc365d..02968064 100644 --- a/csharp.xUnit/GildedRose/ItemUpdaterFactory.cs +++ b/csharp.xUnit/GildedRose/ItemUpdaterFactory.cs @@ -31,6 +31,7 @@ public class ItemUpdaterFactory : IItemUpdaterFactory new AgedBrieUpdater(), new SulfurasUpdater(), new BackstagePassUpdater(), + new ConjuredItemUpdater(), }); public IItemUpdater Get(Item item)