diff --git a/app/gilded-rose.ts b/app/gilded-rose.ts index ee55134..4be5ecd 100644 --- a/app/gilded-rose.ts +++ b/app/gilded-rose.ts @@ -5,7 +5,7 @@ export class Item { constructor(name, sellIn, quality) { this.name = name; - this.sellIn = sellIn; + this.sellIn = sellIn; this.quality = quality; } } @@ -22,7 +22,13 @@ export class GildedRose { 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.split(" ")[0] == 'Conjured') { + this.items[i].quality = this.items[i].quality - 2; + if(this.items[i].quality < 0) + this.items[i].quality = 0; + } else { + this.items[i].quality = this.items[i].quality - 1; + } } } } else { @@ -52,6 +58,12 @@ export class GildedRose { if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { this.items[i].quality = this.items[i].quality - 1 } + if(this.items[i].name.split(" ")[0] == 'Conjured') { + this.items[i].quality = this.items[i].quality - 1; + if(this.items[i].quality < 0) + this.items[i].quality = 0; + } + } } else { this.items[i].quality = this.items[i].quality - this.items[i].quality @@ -66,4 +78,4 @@ export class GildedRose { 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..67aaa67 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', () => { @@ -19,7 +19,163 @@ describe('Gilded Rose', () => { // Act const items = gildedRose.updateQuality(); + // Assert + expect(items[0].quality).toBe(0); + }) + + it('sword sellin drops by 1', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Sword', 1, 1)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].sellIn).toBe(0); + }) + + it('sword sellIn can be negative', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Sword', 0, 0)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].sellIn).toBe(-1); + }) + + it('Once the sell by date has passed, Quality degrades twice as fast', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Sword', 0, 10)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(8); + }) + + it('The Quality of an item is never negative', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Sword', 0, 0)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(0); + }) + + it('"Aged Brie" actually increases in Quality the older it gets', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Aged Brie', 5, 0)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(1); + }) + + it('The Quality of an item is never more than 50', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Aged Brie', 5, 50)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(50); + }) + + it('"Sulfuras", never has to be sold or decreases in Quality', () => { + // 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); + expect(items[0].sellIn).toBe(5); + }) + + it('"Backstage passes", Quality increases by 2 when there are 10 days or less; ', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 10, 10)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(12); + }) + + it('"Backstage passes", Quality increases by 3 when there are 5 days or less; ', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 5, 10)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(13); + }) + + it('"Backstage passes", Quality drops to 0 after the concert; ', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 0, 10)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(0); + }) + + //teste pentru Conjured + it('conjured degrade in quality twice as fast as normal items', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Conjured Mana Cake', 1, 10)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(8); + }) + + it('conjured degrade in quality twice as fast as normal items', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Conjured Mana Cake', 1, 1)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(0); + }) + + it('conjured degrade in quality twice as fast as normal items', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Conjured Mana Cake', -1, 5)]); + + // Act + const items = gildedRose.updateQuality(); + // Assert expect(items[0].quality).toBe(1); }) + + it('conjured degrade in quality twice as fast as normal items', () => { + // Arrange + const gildedRose = new GildedRose([new Item('Aged Brie', 5, 48)]); + + // Act + const items = gildedRose.updateQuality(); + + // Assert + expect(items[0].quality).toBe(49); + }) });