import type { DiffsHighlighter } from "@pierre/diffs";import { expect, it, vi } from "vite-plus/test"; const { getSharedHighlighter } = vi.hoisted(() => ({ getSharedHighlighter: vi.fn(),})); vi.mock("@pierre/diffs", () => ({ getSharedHighlighter,})); import { getSyntaxHighlighterPromise } from "./syntaxHighlighting"; it("caches the recovered text highlighter for unsupported languages", async () => { const textHighlighter = {} as DiffsHighlighter; getSharedHighlighter.mockImplementation(({ langs }: { langs: string[] }) => langs[0] === "text" ? Promise.resolve(textHighlighter) : Promise.reject(new Error("unsupported language")), ); const first = getSyntaxHighlighterPromise("unsupported-test-language"); await expect(first).resolves.toBe(textHighlighter); const second = getSyntaxHighlighterPromise("unsupported-test-language"); expect(second).toBe(first); expect(getSharedHighlighter).toHaveBeenCalledTimes(2);});
import type { DiffsHighlighter } from "@pierre/diffs";
import { expect, it, vi } from "vite-plus/test";
const { getSharedHighlighter } = vi.hoisted(() => ({
getSharedHighlighter: vi.fn(),
}));
vi.mock("@pierre/diffs", () => ({
getSharedHighlighter,
}));
import { getSyntaxHighlighterPromise } from "./syntaxHighlighting";
it("caches the recovered text highlighter for unsupported languages", async () => {
const textHighlighter = {} as DiffsHighlighter;
getSharedHighlighter.mockImplementation(({ langs }: { langs: string[] }) =>
langs[0] === "text"
? Promise.resolve(textHighlighter)
: Promise.reject(new Error("unsupported language")),
);
const first = getSyntaxHighlighterPromise("unsupported-test-language");
await expect(first).resolves.toBe(textHighlighter);
const second = getSyntaxHighlighterPromise("unsupported-test-language");
expect(second).toBe(first);
expect(getSharedHighlighter).toHaveBeenCalledTimes(2);
});