From 60aafd40e1bfa77d1b8392256b8ce27a774df8fd Mon Sep 17 00:00:00 2001 From: Gayun00 Date: Mon, 25 Sep 2023 21:53:58 +0900 Subject: [PATCH] Refactor: seperate to handleSellIn, handleQuality --- TypeScript/app/gilded-rose.ts | 65 +++++++++++------------- TypeScript/test/jest/gilded-rose.spec.ts | 3 +- 2 files changed, 31 insertions(+), 37 deletions(-) diff --git a/TypeScript/app/gilded-rose.ts b/TypeScript/app/gilded-rose.ts index 15d316bf..ea8adf4b 100644 --- a/TypeScript/app/gilded-rose.ts +++ b/TypeScript/app/gilded-rose.ts @@ -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; @@ -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; diff --git a/TypeScript/test/jest/gilded-rose.spec.ts b/TypeScript/test/jest/gilded-rose.spec.ts index e89a60f6..c9a6c81b 100644 --- a/TypeScript/test/jest/gilded-rose.spec.ts +++ b/TypeScript/test/jest/gilded-rose.spec.ts @@ -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)]);