GildedRose-Refactoring-Kata/js-jasmine/src/shop.js
2020-12-03 15:00:16 +00:00

77 lines
1.6 KiB
JavaScript

class Shop {
constructor(items = []) {
this.items = items;
this.MAX_QUALITY = 50;
this.MIN_QUALITY = 0;
}
updateQuality() {
for (var i = 0; i < this.items.length; i++) {
this._updateItemQuality(this.items[i]);
}
return this.items;
}
_updateItemQuality(item) {
if (item.name == 'Backstage passes to a TAFKAL80ETC concert') {
this._updateQualityBackstagePass(item);
} else if (item.name == 'Aged Brie') {
this._updateQualityAgedBrie(item);
} else if (item.name == 'Sulfuras, Hand of Ragnaros') {
} else {
this._updateQualityStandard(item)
}
this._updateSellIn(item)
this._checkMaxQuality(item);
this._checkMinQuality(item);
}
_updateQualityStandard(item) {
if (item.sellIn <= 0) {
item.quality -= 2;
} else {
item.quality -= 1;
}
}
_updateQualityBackstagePass(item) {
if (item.sellIn <= 0) {
item.quality = 0;
} else if (item.sellIn <= 5) {
item.quality += 3;
} else if (item.sellIn <= 10) {
item.quality += 2;
} else {
item.quality += 1;
}
}
_updateQualityAgedBrie(item) {
if (item.sellIn <= 0) {
item.quality += 2;
} else {
item.quality += 1;
}
}
_updateSellIn(item) {
if (item.name != 'Sulfuras, Hand of Ragnaros') {
item.sellIn = item.sellIn - 1;
}
}
_checkMaxQuality(item) {
if (item.quality > this.MAX_QUALITY) {
item.quality = this.MAX_QUALITY;
}
}
_checkMinQuality(item) {
if (item.quality < this.MIN_QUALITY) {
item.quality = this.MIN_QUALITY;
}
}
}
module.exports = {
Shop
}