update test for each cases in requirements

This commit is contained in:
James Sayer 2022-05-27 10:22:54 -04:00
parent 1efcbb833e
commit 6f9729cd2e
2 changed files with 41 additions and 10 deletions

View File

@ -35,24 +35,17 @@ export class GildedRose {
itemQuality = itemQuality + 1; itemQuality = itemQuality + 1;
break; break;
case itemName.includes('Backstage passes'): case itemName.includes('Backstage passes'):
itemQuality = itemQuality + 1;
if (itemSellin < 11) { if (itemSellin < 11) {
itemQuality = itemQuality + 2; itemQuality = itemQuality + 2;
} else if (itemSellin < 6) { } else if (itemSellin < 6) {
itemQuality = itemQuality + 3; itemQuality = itemQuality + 3;
} else if (itemSellin < 0) { } else if (itemSellin < 0) {
itemQuality = 0; itemQuality = 0;
} else {
itemQuality = itemQuality + 1;
} }
break; break;
case itemName.includes('Conjured'): case itemName.includes('Conjured'):
if (itemQuality > 0) {
itemQuality = itemQuality - 1;
}
if (itemSellin < 0) {
itemQuality = itemQuality - itemQuality;
}
break;
default:
if (itemQuality > 0) { if (itemQuality > 0) {
itemQuality = itemQuality - 2; itemQuality = itemQuality - 2;
} }
@ -60,6 +53,14 @@ export class GildedRose {
itemQuality = itemQuality - itemQuality * 2; itemQuality = itemQuality - itemQuality * 2;
} }
break; 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].quality = itemQuality > 50 ? 50 : itemQuality;
this.items[i].sellIn = itemSellin; this.items[i].sellIn = itemSellin;

View File

@ -1,9 +1,39 @@
import { Item, GildedRose } from '@/gilded-rose'; import { Item, GildedRose } from '@/gilded-rose';
let gildedRose;
describe('Gilded Rose', () => { 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', () => { it('should foo', () => {
const gildedRose = new GildedRose([new Item('foo', 0, 0)]);
const items = gildedRose.updateQuality(); const items = gildedRose.updateQuality();
expect(items[0].name).toBe('foo'); 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);
});
}); });