From a0066f58cd637c40866d5f36c7990f2b6a149bbb Mon Sep 17 00:00:00 2001 From: Artur Goloyad Date: Sat, 25 Jul 2026 20:49:08 +0200 Subject: [PATCH] test: add failing specification tests for Conjured items Conjured items must degrade twice as fast: -2 before sell-by, -4 after, never below 0. Red on purpose (TDD) - the legacy code still treats Conjured as a normal item; they go green once ConjuredItemUpdater lands. Co-Authored-By: Claude Fable 5 --- .../GildedRoseTests/GildedRoseTest.cs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/csharp.xUnit/GildedRoseTests/GildedRoseTest.cs b/csharp.xUnit/GildedRoseTests/GildedRoseTest.cs index 370a1b64..2f4ae367 100644 --- a/csharp.xUnit/GildedRoseTests/GildedRoseTest.cs +++ b/csharp.xUnit/GildedRoseTests/GildedRoseTest.cs @@ -162,4 +162,37 @@ public class GildedRoseTest var item = UpdateOne(BackstagePass, 5, 49); Assert.Equal(50, item.Quality); } + + // ---------- Conjured items ---------- + + [Fact] + public void ConjuredItem_BeforeSellBy_QualityDropsByTwo() + { + var item = UpdateOne("Conjured Mana Cake", 3, 6); + Assert.Equal(2, item.SellIn); + Assert.Equal(4, item.Quality); + } + + [Fact] + public void ConjuredItem_OnSellByDate_QualityDropsByFour() + { + var item = UpdateOne("Conjured Mana Cake", 0, 6); + Assert.Equal(-1, item.SellIn); + Assert.Equal(2, item.Quality); + } + + [Fact] + public void ConjuredItem_AfterSellBy_QualityDropsByFour() + { + var item = UpdateOne("Conjured Mana Cake", -1, 6); + Assert.Equal(-2, item.SellIn); + Assert.Equal(2, item.Quality); + } + + [Fact] + public void ConjuredItem_QualityNeverNegative() + { + var item = UpdateOne("Conjured Mana Cake", 0, 3); + Assert.Equal(0, item.Quality); + } }