star-chart-search-enhancer/tests/background-index.test.ts
2026-04-21 17:10:06 +08:00

51 lines
1.3 KiB
TypeScript

import { describe, expect, test, vi } from "vitest";
import { registerBackgroundMessageHandler } from "../src/background/index";
describe("background-index", () => {
test("downloads csv files when the content script sends a download message", async () => {
const listeners: Array<
(message: unknown, sender: unknown, sendResponse: (response: unknown) => void) => boolean | void
> = [];
const download = vi.fn(async () => undefined);
const sendResponse = vi.fn();
registerBackgroundMessageHandler({
downloads: {
download
},
runtime: {
onMessage: {
addListener(listener) {
listeners.push(listener);
}
}
}
});
expect(listeners).toHaveLength(1);
const result = listeners[0](
{
csv: "列1,列2\n值1,值2",
filename: "market.csv",
type: "download-market-csv"
},
{},
sendResponse
);
expect(result).toBe(true);
await new Promise((resolve) => setTimeout(resolve, 0));
expect(download).toHaveBeenCalledTimes(1);
expect(download).toHaveBeenCalledWith(
expect.objectContaining({
filename: "market.csv",
saveAs: false,
url: expect.stringContaining("data:text/csv;charset=utf-8,")
})
);
expect(sendResponse).toHaveBeenCalledWith({ ok: true });
});
});