mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
77 lines
1.6 KiB
JavaScript
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
|
|
}
|