mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-10 12:11:20 +00:00
Renamed LegacyBehavior to DefaultBehavior and refactored it's logic
This commit is contained in:
parent
09e9ec6e17
commit
3fcea88b62
@ -1,7 +1,7 @@
|
|||||||
import { Item } from "@app/item";
|
import { Item } from "@app/item";
|
||||||
import { getUpdateBehaviorFor } from "./behavior-resolver";
|
import { getUpdateBehaviorFor } from "./behavior-resolver";
|
||||||
import { AgedBrieBehavior } from "./implementations/aged-brie/aged-brie-behavior";
|
import { AgedBrieBehavior } from "./implementations/aged-brie/aged-brie-behavior";
|
||||||
import { LegacyBehavior } from "./implementations/legacy-behavior";
|
import { DefaultBehavior } from "./implementations/default/default-behavior";
|
||||||
import { BackstagePassBehavior } from "./implementations/backstage-pass/backstage-pass-behavior";
|
import { BackstagePassBehavior } from "./implementations/backstage-pass/backstage-pass-behavior";
|
||||||
import { LegendaryItemBehavior } from "./implementations/legendary-item/legendary-item-behavior";
|
import { LegendaryItemBehavior } from "./implementations/legendary-item/legendary-item-behavior";
|
||||||
|
|
||||||
@ -29,6 +29,6 @@ describe("Behavior resolver", () => {
|
|||||||
it("should correctly resolve the rest to Legacy behavior", () => {
|
it("should correctly resolve the rest to Legacy behavior", () => {
|
||||||
expect(
|
expect(
|
||||||
getUpdateBehaviorFor(new Item("some other item", 0, 0))
|
getUpdateBehaviorFor(new Item("some other item", 0, 0))
|
||||||
).toBeInstanceOf(LegacyBehavior);
|
).toBeInstanceOf(DefaultBehavior);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Item } from "@app/item";
|
import { Item } from "@app/item";
|
||||||
import { IUpdateBehavior } from "./update-behavior.interface";
|
import { IUpdateBehavior } from "./update-behavior.interface";
|
||||||
import { LegacyBehavior } from "./implementations/legacy-behavior";
|
import { DefaultBehavior } from "./implementations/default/default-behavior";
|
||||||
import { AgedBrieBehavior } from "./implementations/aged-brie/aged-brie-behavior";
|
import { AgedBrieBehavior } from "./implementations/aged-brie/aged-brie-behavior";
|
||||||
import { BackstagePassBehavior } from "./implementations/backstage-pass/backstage-pass-behavior";
|
import { BackstagePassBehavior } from "./implementations/backstage-pass/backstage-pass-behavior";
|
||||||
import { LegendaryItemBehavior } from "./implementations/legendary-item/legendary-item-behavior";
|
import { LegendaryItemBehavior } from "./implementations/legendary-item/legendary-item-behavior";
|
||||||
@ -14,6 +14,6 @@ export function getUpdateBehaviorFor(item: Item): IUpdateBehavior {
|
|||||||
case "Sulfuras, Hand of Ragnaros":
|
case "Sulfuras, Hand of Ragnaros":
|
||||||
return new LegendaryItemBehavior(item);
|
return new LegendaryItemBehavior(item);
|
||||||
default:
|
default:
|
||||||
return new LegacyBehavior(item);
|
return new DefaultBehavior(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
import { Item } from "@app/item";
|
import { Item } from "@app/item";
|
||||||
import { LegacyBehavior } from "./legacy-behavior";
|
import { DefaultBehavior } from "./default-behavior";
|
||||||
|
|
||||||
describe("Legacy Behavior", () => {
|
describe("Default Behavior", () => {
|
||||||
it("should degrade sell inn and quality each day", () => {
|
it("should degrade sell inn and quality each day", () => {
|
||||||
const behavior = new LegacyBehavior(new Item("standard item", 1, 1));
|
const behavior = new DefaultBehavior(new Item("standard item", 1, 1));
|
||||||
|
|
||||||
const result = behavior.update();
|
const result = behavior.update();
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ describe("Legacy Behavior", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should degrade quality twice as fast after sell in date", () => {
|
it("should degrade quality twice as fast after sell in date", () => {
|
||||||
const behavior = new LegacyBehavior(new Item("standard item", 0, 2));
|
const behavior = new DefaultBehavior(new Item("standard item", 0, 2));
|
||||||
|
|
||||||
const result = behavior.update();
|
const result = behavior.update();
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ describe("Legacy Behavior", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should not degrade quality below 0", () => {
|
it("should not degrade quality below 0", () => {
|
||||||
const behavior = new LegacyBehavior(new Item("standard item", 1, 0));
|
const behavior = new DefaultBehavior(new Item("standard item", 1, 0));
|
||||||
|
|
||||||
const result = behavior.update();
|
const result = behavior.update();
|
||||||
|
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
import { Item } from "@app/item";
|
||||||
|
import { IUpdateBehavior } from "../../update-behavior.interface";
|
||||||
|
|
||||||
|
export class DefaultBehavior implements IUpdateBehavior {
|
||||||
|
constructor(private item: Item) {}
|
||||||
|
|
||||||
|
update(): Item {
|
||||||
|
const amountToSubtract = this.item.sellIn <= 0 ? 2 : 1;
|
||||||
|
this.item.quality = Math.max(this.item.quality - amountToSubtract, 0);
|
||||||
|
|
||||||
|
this.item.sellIn -= 1;
|
||||||
|
|
||||||
|
return this.item;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,20 +0,0 @@
|
|||||||
import { Item } from "@app/item";
|
|
||||||
import { IUpdateBehavior } from "../update-behavior.interface";
|
|
||||||
|
|
||||||
export class LegacyBehavior implements IUpdateBehavior {
|
|
||||||
constructor(private item: Item) {}
|
|
||||||
|
|
||||||
update(): Item {
|
|
||||||
if (this.item.quality > 0) {
|
|
||||||
this.item.quality = this.item.quality - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.item.sellIn = this.item.sellIn - 1;
|
|
||||||
if (this.item.sellIn < 0) {
|
|
||||||
if (this.item.quality > 0) {
|
|
||||||
this.item.quality = this.item.quality - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this.item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user