58 lines · 1.8 KB · TypeScript
RawDownload
import { describe, it, expect } from "vitest";import { normalizeCode } from "./normalize"; describe("normalizeCode", () => {  it("passes through an async arrow function", () => {    const code = "async () => { return 1; }";    expect(normalizeCode(code)).toBe(code);  });   it("passes through an async arrow with params", () => {    const code = "async (x) => x + 1";    expect(normalizeCode(code)).toBe(code);  });   it("wraps a bare expression in an async arrow", () => {    const result = normalizeCode("1 + 2");    expect(result).toContain("async () =>");    expect(result).toContain("1 + 2");  });   it("wraps a function declaration and calls it", () => {    const result = normalizeCode("function hello() { return 42; }");    expect(result).toContain("async () =>");    expect(result).toContain("function hello()");    expect(result).toContain("return hello();");  });   it("wraps an async function declaration", () => {    const result = normalizeCode("async function run() { return 'ok'; }");    expect(result).toContain("return run();");  });   it("strips markdown code fences", () => {    const code = "```js\nasync () => 42\n```";    expect(normalizeCode(code)).toBe("async () => 42");  });   it("strips typescript fences", () => {    const code = "```typescript\nasync () => 42\n```";    expect(normalizeCode(code)).toBe("async () => 42");  });   it("returns noop for empty string", () => {    expect(normalizeCode("")).toBe("async () => {}");  });   it("returns noop for whitespace-only", () => {    expect(normalizeCode("   \n  ")).toBe("async () => {}");  });   it("handles multi-statement code", () => {    const code = "const a = 1;\nconst b = 2;\na + b";    const result = normalizeCode(code);    expect(result).toContain("async () =>");    expect(result).toContain("const a = 1;");    expect(result).toContain("a + b");  });});