mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
Refactor: add item classes
This commit is contained in:
parent
60aafd40e1
commit
5d670ac672
59
TypeScript/app/itemClasses.ts
Normal file
59
TypeScript/app/itemClasses.ts
Normal file
@ -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() {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
import { Item, GildedRose } from "../app/gilded-rose";
|
import { Item } from "@/itemClasses";
|
||||||
|
import { GildedRose } from "../app/gilded-rose";
|
||||||
|
|
||||||
const items = [
|
const items = [
|
||||||
new Item("+5 Dexterity Vest", 10, 20), //
|
new Item("+5 Dexterity Vest", 10, 20), //
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import { GildedRose } from "@/gilded-rose";
|
import { GildedRose } from "@/gilded-rose";
|
||||||
import { Item } from "@/itemClasses";
|
import { AgedBrie, Passes, Surfras } from "@/itemClasses";
|
||||||
|
|
||||||
describe("Aged Brie 테스트", () => {
|
describe("Aged Brie 테스트", () => {
|
||||||
let gildedRose = new GildedRose([new Item("Aged Brie", 1, 0)]);
|
let gildedRose = new GildedRose([new AgedBrie(1, 0)]);
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
gildedRose = new GildedRose([new Item("Aged Brie", 2, 3)]);
|
gildedRose = new GildedRose([new AgedBrie(2, 3)]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Aged Brie의 quality는 1 증가, sellIn은 1 감소", () => {
|
it("Aged Brie의 quality는 1 증가, sellIn은 1 감소", () => {
|
||||||
@ -16,7 +16,7 @@ describe("Aged Brie 테스트", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("quality는 50을 초과할 수 없음", () => {
|
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();
|
const items = gildedRose.updateQuality();
|
||||||
|
|
||||||
expect(items[0].sellIn).toBe(1);
|
expect(items[0].sellIn).toBe(1);
|
||||||
@ -25,12 +25,10 @@ describe("Aged Brie 테스트", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("Surfras 테스트", () => {
|
describe("Surfras 테스트", () => {
|
||||||
let gildedRose = new GildedRose([
|
let gildedRose = new GildedRose([new Surfras(1, 0)]);
|
||||||
new Item("Sulfuras, Hand of Ragnaros", 1, 0),
|
|
||||||
]);
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
gildedRose = new GildedRose([new Item("Sulfuras, Hand of Ragnaros", 2, 3)]);
|
gildedRose = new GildedRose([new Surfras(2, 3)]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Surfras의 quality는 변하지 않음, sellIn 변하지 않음", () => {
|
it("Surfras의 quality는 변하지 않음, sellIn 변하지 않음", () => {
|
||||||
@ -42,14 +40,10 @@ describe("Surfras 테스트", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("Backstage passes 테스트", () => {
|
describe("Backstage passes 테스트", () => {
|
||||||
let gildedRose = new GildedRose([
|
let gildedRose = new GildedRose([new Passes(1, 0)]);
|
||||||
new Item("Backstage passes to a TAFKAL80ETC concert", 1, 0),
|
|
||||||
]);
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
gildedRose = new GildedRose([
|
gildedRose = new GildedRose([new Passes(2, 3)]);
|
||||||
new Item("Backstage passes to a TAFKAL80ETC concert", 2, 3),
|
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Backstage passes의 sellIn값 1감소, quality 1증가", () => {
|
it("Backstage passes의 sellIn값 1감소, quality 1증가", () => {
|
||||||
@ -60,9 +54,7 @@ describe("Backstage passes 테스트", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("Backstage passes의 sellIn값 10일부터, quality 2증가", () => {
|
it("Backstage passes의 sellIn값 10일부터, quality 2증가", () => {
|
||||||
const gildedRose = new GildedRose([
|
const gildedRose = new GildedRose([new Passes(10, 3)]);
|
||||||
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 3),
|
|
||||||
]);
|
|
||||||
const items = gildedRose.updateQuality();
|
const items = gildedRose.updateQuality();
|
||||||
|
|
||||||
expect(items[0].sellIn).toBe(9);
|
expect(items[0].sellIn).toBe(9);
|
||||||
@ -70,9 +62,7 @@ describe("Backstage passes 테스트", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("Backstage passes의 sellIn값 5일부터, quality 3증가", () => {
|
it("Backstage passes의 sellIn값 5일부터, quality 3증가", () => {
|
||||||
const gildedRose = new GildedRose([
|
const gildedRose = new GildedRose([new Passes(5, 3)]);
|
||||||
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 3),
|
|
||||||
]);
|
|
||||||
const items = gildedRose.updateQuality();
|
const items = gildedRose.updateQuality();
|
||||||
|
|
||||||
expect(items[0].sellIn).toBe(4);
|
expect(items[0].sellIn).toBe(4);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user