diff --git a/TypeScript/app/itemClasses.ts b/TypeScript/app/itemClasses.ts new file mode 100644 index 00000000..7507b2b5 --- /dev/null +++ b/TypeScript/app/itemClasses.ts @@ -0,0 +1,59 @@ +export class Item { + name: string; + sellIn: number; + quality: number; + + constructor(name, sellIn, quality) { + this.name = name; + this.sellIn = sellIn; + this.quality = quality; + } + + handleQuality() { + // + } + + handleSellIn() { + // + } +} + +export class AgedBrie extends Item { + constructor(sellIn, quality) { + super("Aged Brie", sellIn, quality); + } + handleQuality() { + // + } + + handleSellIn() { + // + } +} + +export class Passes extends Item { + constructor(sellIn, quality) { + super("Backstage passes to a TAFKAL80ETC concert", sellIn, quality); + } + + handleQuality() { + // + } + + handleSellIn() { + // + } +} + +export class Surfras extends Item { + constructor(sellIn, quality) { + super("Sulfuras, Hand of Ragnaros", sellIn, quality); + } + handleQuality() { + // + } + + handleSellIn() { + // + } +} diff --git a/TypeScript/test/golden-master-text-test.ts b/TypeScript/test/golden-master-text-test.ts index 6fa5537a..3ee77ab2 100644 --- a/TypeScript/test/golden-master-text-test.ts +++ b/TypeScript/test/golden-master-text-test.ts @@ -1,4 +1,5 @@ -import { Item, GildedRose } from "../app/gilded-rose"; +import { Item } from "@/itemClasses"; +import { GildedRose } from "../app/gilded-rose"; const items = [ new Item("+5 Dexterity Vest", 10, 20), // diff --git a/TypeScript/test/jest/gilded-rose.spec.ts b/TypeScript/test/jest/gilded-rose.spec.ts index c9a6c81b..3f0f0c64 100644 --- a/TypeScript/test/jest/gilded-rose.spec.ts +++ b/TypeScript/test/jest/gilded-rose.spec.ts @@ -1,11 +1,11 @@ import { GildedRose } from "@/gilded-rose"; -import { Item } from "@/itemClasses"; +import { AgedBrie, Passes, Surfras } from "@/itemClasses"; describe("Aged Brie 테스트", () => { - let gildedRose = new GildedRose([new Item("Aged Brie", 1, 0)]); + let gildedRose = new GildedRose([new AgedBrie(1, 0)]); beforeEach(() => { - gildedRose = new GildedRose([new Item("Aged Brie", 2, 3)]); + gildedRose = new GildedRose([new AgedBrie(2, 3)]); }); it("Aged Brie의 quality는 1 증가, sellIn은 1 감소", () => { @@ -16,7 +16,7 @@ describe("Aged Brie 테스트", () => { }); it("quality는 50을 초과할 수 없음", () => { - const gildedRose = new GildedRose([new Item("Aged Brie", 2, 50)]); + const gildedRose = new GildedRose([new AgedBrie(2, 50)]); const items = gildedRose.updateQuality(); expect(items[0].sellIn).toBe(1); @@ -25,12 +25,10 @@ describe("Aged Brie 테스트", () => { }); describe("Surfras 테스트", () => { - let gildedRose = new GildedRose([ - new Item("Sulfuras, Hand of Ragnaros", 1, 0), - ]); + let gildedRose = new GildedRose([new Surfras(1, 0)]); beforeEach(() => { - gildedRose = new GildedRose([new Item("Sulfuras, Hand of Ragnaros", 2, 3)]); + gildedRose = new GildedRose([new Surfras(2, 3)]); }); it("Surfras의 quality는 변하지 않음, sellIn 변하지 않음", () => { @@ -42,14 +40,10 @@ describe("Surfras 테스트", () => { }); describe("Backstage passes 테스트", () => { - let gildedRose = new GildedRose([ - new Item("Backstage passes to a TAFKAL80ETC concert", 1, 0), - ]); + let gildedRose = new GildedRose([new Passes(1, 0)]); beforeEach(() => { - gildedRose = new GildedRose([ - new Item("Backstage passes to a TAFKAL80ETC concert", 2, 3), - ]); + gildedRose = new GildedRose([new Passes(2, 3)]); }); it("Backstage passes의 sellIn값 1감소, quality 1증가", () => { @@ -60,9 +54,7 @@ describe("Backstage passes 테스트", () => { }); it("Backstage passes의 sellIn값 10일부터, quality 2증가", () => { - const gildedRose = new GildedRose([ - new Item("Backstage passes to a TAFKAL80ETC concert", 10, 3), - ]); + const gildedRose = new GildedRose([new Passes(10, 3)]); const items = gildedRose.updateQuality(); expect(items[0].sellIn).toBe(9); @@ -70,9 +62,7 @@ describe("Backstage passes 테스트", () => { }); it("Backstage passes의 sellIn값 5일부터, quality 3증가", () => { - const gildedRose = new GildedRose([ - new Item("Backstage passes to a TAFKAL80ETC concert", 5, 3), - ]); + const gildedRose = new GildedRose([new Passes(5, 3)]); const items = gildedRose.updateQuality(); expect(items[0].sellIn).toBe(4);