From 163b290dadb80d8fface9890546caa2df45bdf6c Mon Sep 17 00:00:00 2001 From: kittykatspiral Date: Sun, 6 Apr 2025 12:40:55 +0300 Subject: [PATCH] Fixed and added tests; refactored updateQuality function --- app/gilded-rose.ts | 64 ++++++++++++--------------------- test/jest/gilded-rose.spec.ts | 67 +++++++++++++++++++++++++++++++++-- 2 files changed, 87 insertions(+), 44 deletions(-) diff --git a/app/gilded-rose.ts b/app/gilded-rose.ts index ee55134..a529303 100644 --- a/app/gilded-rose.ts +++ b/app/gilded-rose.ts @@ -19,51 +19,33 @@ export class GildedRose { updateQuality() { for (let i = 0; i < this.items.length; i++) { - if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } + if (this.items[i].name != 'Sulfuras, Hand of Ragnaros'){ + if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { + if(this.items[i].quality < 50) { + this.items[i].quality = this.items[i].quality + 1 + if (this.items[i].sellIn < 11) { + this.items[i].quality = this.items[i].quality + 1 } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].sellIn < 11) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - if (this.items[i].sellIn < 6) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - } + if (this.items[i].sellIn < 6) { + this.items[i].quality = this.items[i].quality + 1 } + } + if (this.items[i].sellIn == 0) { + this.items[i].quality = 0 + } } - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].sellIn = this.items[i].sellIn - 1; + if (this.items[i].name == 'Aged Brie' && this.items[i].quality < 50){ + this.items[i].quality = this.items[i].quality + 1 } - if (this.items[i].sellIn < 0) { - if (this.items[i].name != 'Aged Brie') { - if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - this.items[i].quality = this.items[i].quality - this.items[i].quality - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } + if (this.items[i].name == 'Conjured Mana Cake'){ + this.items[i].quality = this.items[i].quality - 1 + } + if(this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert' && this.items[i].name != 'Aged Brie'){ + this.items[i].quality = this.items[i].quality - 1 } + this.items[i].sellIn= this.items[i].sellIn - 1 + } } - - return this.items; + return this.items; } -} \ No newline at end of file +} diff --git a/test/jest/gilded-rose.spec.ts b/test/jest/gilded-rose.spec.ts index 613639f..aef8aa5 100644 --- a/test/jest/gilded-rose.spec.ts +++ b/test/jest/gilded-rose.spec.ts @@ -9,7 +9,7 @@ describe('Gilded Rose', () => { const items = gildedRose.updateQuality(); // Assert - expect(items[0].name).toBe('bar'); + expect(items[0].name).toBe('foo'); }); it('sword quality drops by 1', () => { @@ -20,6 +20,67 @@ describe('Gilded Rose', () => { const items = gildedRose.updateQuality(); // Assert - expect(items[0].quality).toBe(1); - }) + expect(items[0].quality).toBe(0); + }); + it('conjured quality drops by 2', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Conjured Mana Cake', 7, 4)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(2); + }); + it('sulfuras quality does not drop', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 5, 80)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(80); + }); + it('sulfuras sellIn does not decrease', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 5, 80)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].sellIn).toBe(5); + }); + it('sword sellIn decreases', () => { + // Arrange + const gildedRose = new GildedRose([new Item('sword', 7, 17)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].sellIn).toBe(6); + }); + it('brie quality limit at 50', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Aged Brie', 7, 50)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(50); + }); + it('backstage quality zero after concert', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 0, 50)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(0); + }); + });