From 6f9729cd2ea0cf0ebfe6145e36cf90e9a49a3fd3 Mon Sep 17 00:00:00 2001 From: James Sayer Date: Fri, 27 May 2022 10:22:54 -0400 Subject: [PATCH] update test for each cases in requirements --- TypeScript/app/gilded-rose.ts | 19 +++++++------- TypeScript/test/jest/gilded-rose.spec.ts | 32 +++++++++++++++++++++++- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/TypeScript/app/gilded-rose.ts b/TypeScript/app/gilded-rose.ts index 2314f2bc..6de32224 100644 --- a/TypeScript/app/gilded-rose.ts +++ b/TypeScript/app/gilded-rose.ts @@ -35,24 +35,17 @@ export class GildedRose { itemQuality = itemQuality + 1; break; case itemName.includes('Backstage passes'): - itemQuality = itemQuality + 1; if (itemSellin < 11) { itemQuality = itemQuality + 2; } else if (itemSellin < 6) { itemQuality = itemQuality + 3; } else if (itemSellin < 0) { itemQuality = 0; + } else { + itemQuality = itemQuality + 1; } break; case itemName.includes('Conjured'): - if (itemQuality > 0) { - itemQuality = itemQuality - 1; - } - if (itemSellin < 0) { - itemQuality = itemQuality - itemQuality; - } - break; - default: if (itemQuality > 0) { itemQuality = itemQuality - 2; } @@ -60,6 +53,14 @@ export class GildedRose { itemQuality = itemQuality - itemQuality * 2; } break; + default: + if (itemQuality > 0) { + itemQuality = itemQuality - 1; + } + if (itemSellin < 0) { + itemQuality = itemQuality - itemQuality; + } + break; } this.items[i].quality = itemQuality > 50 ? 50 : itemQuality; this.items[i].sellIn = itemSellin; diff --git a/TypeScript/test/jest/gilded-rose.spec.ts b/TypeScript/test/jest/gilded-rose.spec.ts index 498c9ec1..fbd3edba 100644 --- a/TypeScript/test/jest/gilded-rose.spec.ts +++ b/TypeScript/test/jest/gilded-rose.spec.ts @@ -1,9 +1,39 @@ import { Item, GildedRose } from '@/gilded-rose'; +let gildedRose; describe('Gilded Rose', () => { + beforeEach(() => { + gildedRose = new GildedRose([ + new Item('foo', 0, 0), + new Item('Conjured item', 10, 8), + new Item('Sulfuras item', 0, 80), + new Item('Aged Brie item ', 10, 33), + new Item('Aged Brie item', 0, 50), + new Item('Backstage passes item', 8, 30), + ]); + }) it('should foo', () => { - const gildedRose = new GildedRose([new Item('foo', 0, 0)]); const items = gildedRose.updateQuality(); expect(items[0].name).toBe('foo'); }); + it('The quality of Conjured item should be degraded by twice', () => { + const items = gildedRose.updateQuality(); + expect(items[1].quality).toBe(6); + }); + it('The quality of Sulfuras item should remain unchanged', () => { + const items = gildedRose.updateQuality(); + expect(items[2].quality).toBe(80); + }); + it('Aged Brie item actually increases in Quality the older it gets', () => { + const items = gildedRose.updateQuality(); + expect(items[3].quality).toBe(34); + }); + it('The Quality of an item is never more than 50', () => { + const items = gildedRose.updateQuality(); + expect(items[4].quality).toBe(50); + }); + it('The Quality of Backstage passes item increases by 2 when there are 10 days or less', () => { + const items = gildedRose.updateQuality(); + expect(items[5].quality).toBe(32); + }); });