Refactor: seperate to handleSellIn, handleQuality

This commit is contained in:
Gayun00 2023-09-25 21:53:58 +09:00
parent c36fb2b4ee
commit 60aafd40e1
2 changed files with 31 additions and 37 deletions

View File

@ -1,16 +1,5 @@
import { ITEMS } from "./constants";
export class Item {
name: string;
sellIn: number;
quality: number;
constructor(name, sellIn, quality) {
this.name = name;
this.sellIn = sellIn;
this.quality = quality;
}
}
import { Item } from "./itemClasses";
export class GildedRose {
items: Array<Item>;
@ -19,6 +8,26 @@ export class GildedRose {
this.items = items;
}
handleSellIn(item) {
if (item.name != ITEMS.SURFRAS) {
item.sellIn -= 1;
}
if (item.sellIn >= 0) return;
if (item.quality >= 50) return;
switch (item.name) {
case ITEMS.BRIE:
item.quality = item.quality + 1;
break;
case ITEMS.SURFRAS:
item.quality = 0;
break;
default:
item.quality -= 1;
break;
}
}
handlePassesQuality(item) {
if (item.name !== ITEMS.PASSES) return;
if (6 <= item.sellIn && item.sellIn < 11) {
@ -30,41 +39,25 @@ export class GildedRose {
}
}
handleIfSellInIs0(item) {
if (item.sellIn >= 0) return;
handleQuality(item) {
switch (item.name) {
case ITEMS.BRIE:
if (item.quality >= 50) return;
item.quality = item.quality + 1;
case ITEMS.PASSES:
this.handlePassesQuality(item);
break;
case ITEMS.SURFRAS:
item.quality = 0;
break;
default:
if (!item.quality) return;
item.quality -= 1;
break;
}
if (item.quality >= 50) return;
item.quality += 1;
}
updateQuality() {
for (const item of this.items) {
if (!item.quality) break;
if (item.name != ITEMS.SURFRAS) {
item.sellIn -= 1;
}
this.handleIfSellInIs0(item);
if (item.name != ITEMS.BRIE && item.name != ITEMS.PASSES) {
if (item.name === ITEMS.SURFRAS) break;
item.quality -= 1;
}
if (item.quality >= 50) break;
item.quality += 1;
this.handlePassesQuality(item);
this.handleSellIn(item);
this.handleQuality(item);
}
return this.items;

View File

@ -1,4 +1,5 @@
import { Item, GildedRose } from "@/gilded-rose";
import { GildedRose } from "@/gilded-rose";
import { Item } from "@/itemClasses";
describe("Aged Brie 테스트", () => {
let gildedRose = new GildedRose([new Item("Aged Brie", 1, 0)]);