mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-18 07:51:29 +00:00
Add enum for item types
This commit is contained in:
parent
31c3d16ad6
commit
2e8b239f54
@ -10,6 +10,13 @@ export class Item {
|
||||
}
|
||||
}
|
||||
|
||||
export enum ItemType {
|
||||
Sulfuras = 'Sulfuras, Hand of Ragnaros',
|
||||
BackstagePass = 'Backstage passes to a TAFKAL80ETC concert',
|
||||
AgedBrie = 'Aged Brie',
|
||||
ConjuredItem = 'Conjured',
|
||||
}
|
||||
|
||||
export class GildedRose {
|
||||
items: Array<Item>;
|
||||
|
||||
@ -38,6 +45,12 @@ export class GildedRose {
|
||||
++item.quality;
|
||||
}
|
||||
|
||||
private static updateConjuredItem(item: Item) {
|
||||
item.quality -= 2;
|
||||
if (item.sellIn < 0)
|
||||
item.quality -= 2;
|
||||
}
|
||||
|
||||
private static updateRegularItem(item: Item) {
|
||||
--item.quality;
|
||||
if (item.sellIn < 0)
|
||||
@ -54,15 +67,18 @@ export class GildedRose {
|
||||
private updateItemQuality(item: Item) {
|
||||
--item.sellIn;
|
||||
switch (item.name) {
|
||||
case 'Sulfuras, Hand of Ragnaros':
|
||||
case ItemType.Sulfuras:
|
||||
GildedRose.updateSulfuras(item);
|
||||
break;
|
||||
case 'Backstage passes to a TAFKAL80ETC concert':
|
||||
case ItemType.BackstagePass:
|
||||
GildedRose.updateBackstagePass(item);
|
||||
break;
|
||||
case 'Aged Brie':
|
||||
case ItemType.AgedBrie:
|
||||
GildedRose.updateAgedBrie(item);
|
||||
break;
|
||||
case ItemType.ConjuredItem:
|
||||
GildedRose.updateConjuredItem(item);
|
||||
break;
|
||||
default:
|
||||
GildedRose.updateRegularItem(item);
|
||||
}
|
||||
|
||||
@ -101,7 +101,45 @@ describe('Gilded Rose', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Any normal item', () => {
|
||||
describe('Conjured item', () => {
|
||||
it('one iteration, not passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Conjured', 5, 31)]);
|
||||
gildedRose.updateQuality();
|
||||
expect(gildedRose.items[0].quality).to.equal(29);
|
||||
});
|
||||
|
||||
it('one iteration, passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Conjured', -1, 31)]);
|
||||
gildedRose.updateQuality();
|
||||
expect(gildedRose.items[0].quality).to.equal(27);
|
||||
});
|
||||
|
||||
it('multiple iterations, not reaching negative quality and not passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Conjured', 21, 31)]);
|
||||
for (let i = 0; i < 10; ++i) {
|
||||
gildedRose.updateQuality();
|
||||
}
|
||||
expect(gildedRose.items[0].quality).to.equal(11);
|
||||
});
|
||||
|
||||
it('multiple iterations, not reaching negative quality and passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Conjured', 5, 37)]);
|
||||
for (let i = 0; i < 10; ++i) {
|
||||
gildedRose.updateQuality();
|
||||
}
|
||||
expect(gildedRose.items[0].quality).to.equal(7);
|
||||
});
|
||||
|
||||
it('multiple iterations, reaching negative quality and passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Conjured', 5, 12)]);
|
||||
for (let i = 0; i < 10; ++i) {
|
||||
gildedRose.updateQuality();
|
||||
}
|
||||
expect(gildedRose.items[0].quality).to.equal(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Regular item', () => {
|
||||
it('one iteration, not passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Any normal item', 5, 31)]);
|
||||
gildedRose.updateQuality();
|
||||
@ -130,7 +168,7 @@ describe('Gilded Rose', () => {
|
||||
expect(gildedRose.items[0].quality).to.equal(15);
|
||||
});
|
||||
|
||||
it('multiple iterations, reaching max quality and passed sell date', () => {
|
||||
it('multiple iterations, reaching negative quality and passed sell date', () => {
|
||||
const gildedRose = new GildedRose([new Item('Any normal item', 5, 12)]);
|
||||
for (let i = 0; i < 10; ++i) {
|
||||
gildedRose.updateQuality();
|
||||
@ -138,10 +176,4 @@ describe('Gilded Rose', () => {
|
||||
expect(gildedRose.items[0].quality).to.equal(0);
|
||||
});
|
||||
});
|
||||
|
||||
// it('should foo', () => {
|
||||
// const gildedRose = new GildedRose([new Item('foo', 0, 0)]);
|
||||
// const items = gildedRose.updateQuality();
|
||||
// expect(items[0].name).to.equal('fixme');
|
||||
// });
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user