diff --git a/test/gilded_rose_test.dart b/test/gilded_rose_test.dart index fbe0ed9..f79d761 100644 --- a/test/gilded_rose_test.dart +++ b/test/gilded_rose_test.dart @@ -143,6 +143,38 @@ void main() { }); }); + group('Conjured items', () { + test('degrade in quality twice as fast as normal items', () { + final items = [Item('Conjured Mana Cake', 10, 20)]; + final gildedRose = GildedRose(items); + + gildedRose.updateQuality(); + + expect(items[0].quality, equals(18)); // -2 instead of -1 + expect(items[0].sellIn, equals(9)); + }); + + test('degrade twice as fast after sell-by date', () { + final items = [Item('Conjured Mana Cake', 0, 20)]; + final gildedRose = GildedRose(items); + + gildedRose.updateQuality(); + + expect(items[0].quality, equals(16)); // -4 instead of -2 + expect(items[0].sellIn, equals(-1)); + }); + + test('never have negative quality', () { + final items = [Item('Conjured Mana Cake', 5, 1)]; + final gildedRose = GildedRose(items); + + gildedRose.updateQuality(); + + expect(items[0].quality, equals(0)); + expect(items[0].sellIn, equals(4)); + }); + }); + group('Golden Master - 30-day simulation', () { test('captures complete behavior of all item types over time', () { final items = _createAllItemTypes();