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 }); }); });