From 673cec6f83557912ea846d4c5fcf6e9468ed8e4f Mon Sep 17 00:00:00 2001 From: Nadine Date: Thu, 9 Jan 2025 18:08:49 -0400 Subject: [PATCH] port typescript approval tests from jest to vitest --- TypeScript/test/vitest/approvals.spec.ts | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 TypeScript/test/vitest/approvals.spec.ts diff --git a/TypeScript/test/vitest/approvals.spec.ts b/TypeScript/test/vitest/approvals.spec.ts new file mode 100644 index 00000000..ee7cad4f --- /dev/null +++ b/TypeScript/test/vitest/approvals.spec.ts @@ -0,0 +1,54 @@ +import { execSync } from "node:child_process"; +import { Item, GildedRose } from "@/gilded-rose"; + +/** + * This unit test uses [Jest Snapshot](https://goo.gl/fbAQLP). + * + * There are two test cases here with different styles: + *
  • "foo" is more similar to the unit test from the 'Java' version + *
  • "thirtyDays" is more similar to the TextTest from the 'Java' version + * + * I suggest choosing one style to develop and deleting the other. + */ + +describe("Gilded Rose Approval", () => { + let gameConsoleOutput: string; + let originalConsoleLog: (message: any) => void; + let originalProcessArgv: string[]; + + function gameConsoleLog(msg: string) { + if (msg) { + gameConsoleOutput += msg; + } + gameConsoleOutput += "\n"; + } + + beforeEach(() => { + // prepare capturing console.log to our own gameConsoleLog. + gameConsoleOutput = ""; + originalConsoleLog = console.log; + console.log = gameConsoleLog; + originalProcessArgv = process.argv; + }); + + afterEach(() => { + // reset original console.log + console.log = originalConsoleLog; + process.argv = originalProcessArgv; + }); + + it("should foo", () => { + const gildedRose = new GildedRose([new Item("foo", 0, 0)]); + const items = gildedRose.updateQuality(); + + expect(items).toMatchSnapshot(); + }); + + it("should thirtyDays", () => { + execSync(`ts-node test/golden-master-text-test.ts 30`, { + stdio: "inherit", + }); + + expect(gameConsoleOutput).toMatchSnapshot(); + }); +});