From b439f0631c42df6c8e6045597e9dee41db19d580 Mon Sep 17 00:00:00 2001 From: Chaplin Artem <75485190+ArCheeq@users.noreply.github.com> Date: Sat, 22 Apr 2023 18:32:03 +0300 Subject: [PATCH] refactor: refactor js legacy code --- js-mocha/src/gilded_rose.js | 132 +++++++++++++++++++++++------------- 1 file changed, 85 insertions(+), 47 deletions(-) diff --git a/js-mocha/src/gilded_rose.js b/js-mocha/src/gilded_rose.js index acb33985..dad3d0f5 100644 --- a/js-mocha/src/gilded_rose.js +++ b/js-mocha/src/gilded_rose.js @@ -1,66 +1,104 @@ class Item { - constructor(name, sellIn, quality){ + constructor(name, sellIn, quality) { this.name = name; this.sellIn = sellIn; this.quality = quality; } } +const itemsTypes = { + BRIE: "Aged brie", + PASS: "Backstage passes to a TAFKAL80ETC concert", + HAND: "Sulfuras, Hand of Ragnaros", + CON: "Conjured" +}; + +function updateBrie(item) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + + item.sellIn = item.sellIn - 1; + + if (item.sellIn < 0 && item.quality < 50) { + item.quality = item.quality + 1; + } +}; + +function updatePass(item) { + if (item.quality < 50) { + item.quality = item.quality + 1; + if (item.sellIn < 11 && item.quality < 50) { + item.quality = item.quality + 1; + } + if (item.sellIn < 6 && item.quality < 50) { + item.quality = item.quality + 1; + } + } + + item.sellIn = item.sellIn - 1; + + if (item.sellIn < 0) { + item.quality = item.quality - item.quality; + } +}; + +function updateHand(item) {}; + +function updateDefault(item) { + if (item.quality > 0) { + item.quality = item.quality - 1; + } + + item.sellIn = item.sellIn - 1; + + if (item.sellIn < 0 && item.quality > 0) { + item.quality = item.quality - 1; + } +}; + +function updateConjured(item) { + if (item.quality > 0) { + item.quality = item.quality - 2; + } + + item.sellIn = item.sellIn - 1; + + if (item.sellIn < 0 && item.quality > 0) { + item.quality = item.quality - 1; + } +} + class Shop { - constructor(items=[]){ + constructor(items = []) { this.items = items; } + updateQuality() { - for (var i = 0; i < this.items.length; i++) { - if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1; - } - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1; - if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].sellIn < 11) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1; - } - } - if (this.items[i].sellIn < 6) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1; - } - } - } - } - } - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].sellIn = this.items[i].sellIn - 1; - } - if (this.items[i].sellIn < 0) { - if (this.items[i].name != 'Aged Brie') { - if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1; - } - } - } else { - this.items[i].quality = this.items[i].quality - this.items[i].quality; - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1; - } - } + for (const item of this.items) { + switch (item.name) { + case itemsTypes.BRIE: + updateBrie(item); + continue; + case itemsTypes.PASS: + updatePass(item); + continue; + case itemsTypes.HAND: + updateHand(item); + continue; + case itemsTypes.CON: + updateConjured(item); + default: + updateDefault(item); + continue; } } return this.items; } } + module.exports = { Item, - Shop -} + Shop, +};