diff --git a/TypeScript/app/update-behaviors/behavior-resolver.spec.ts b/TypeScript/app/update-behaviors/behavior-resolver.spec.ts index 50b2729b..03af7f34 100644 --- a/TypeScript/app/update-behaviors/behavior-resolver.spec.ts +++ b/TypeScript/app/update-behaviors/behavior-resolver.spec.ts @@ -1,7 +1,7 @@ import { Item } from "@app/item"; import { getUpdateBehaviorFor } from "./behavior-resolver"; 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 { LegendaryItemBehavior } from "./implementations/legendary-item/legendary-item-behavior"; @@ -29,6 +29,6 @@ describe("Behavior resolver", () => { it("should correctly resolve the rest to Legacy behavior", () => { expect( getUpdateBehaviorFor(new Item("some other item", 0, 0)) - ).toBeInstanceOf(LegacyBehavior); + ).toBeInstanceOf(DefaultBehavior); }); }); diff --git a/TypeScript/app/update-behaviors/behavior-resolver.ts b/TypeScript/app/update-behaviors/behavior-resolver.ts index 47a240c0..ff856b10 100644 --- a/TypeScript/app/update-behaviors/behavior-resolver.ts +++ b/TypeScript/app/update-behaviors/behavior-resolver.ts @@ -1,6 +1,6 @@ import { Item } from "@app/item"; 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 { BackstagePassBehavior } from "./implementations/backstage-pass/backstage-pass-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": return new LegendaryItemBehavior(item); default: - return new LegacyBehavior(item); + return new DefaultBehavior(item); } } diff --git a/TypeScript/app/update-behaviors/implementations/legacy-behavior.spec.ts b/TypeScript/app/update-behaviors/implementations/default/default-behavior.spec.ts similarity index 68% rename from TypeScript/app/update-behaviors/implementations/legacy-behavior.spec.ts rename to TypeScript/app/update-behaviors/implementations/default/default-behavior.spec.ts index 0458c851..92f60763 100644 --- a/TypeScript/app/update-behaviors/implementations/legacy-behavior.spec.ts +++ b/TypeScript/app/update-behaviors/implementations/default/default-behavior.spec.ts @@ -1,9 +1,9 @@ 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", () => { - const behavior = new LegacyBehavior(new Item("standard item", 1, 1)); + const behavior = new DefaultBehavior(new Item("standard item", 1, 1)); const result = behavior.update(); @@ -15,7 +15,7 @@ describe("Legacy Behavior", () => { }); 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(); @@ -27,7 +27,7 @@ describe("Legacy Behavior", () => { }); 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(); diff --git a/TypeScript/app/update-behaviors/implementations/default/default-behavior.ts b/TypeScript/app/update-behaviors/implementations/default/default-behavior.ts new file mode 100644 index 00000000..70e07a3f --- /dev/null +++ b/TypeScript/app/update-behaviors/implementations/default/default-behavior.ts @@ -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; + } +} diff --git a/TypeScript/app/update-behaviors/implementations/legacy-behavior.ts b/TypeScript/app/update-behaviors/implementations/legacy-behavior.ts deleted file mode 100644 index 9bf81114..00000000 --- a/TypeScript/app/update-behaviors/implementations/legacy-behavior.ts +++ /dev/null @@ -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; - } -}