Files
spark-store/src/__tests__/unit/App.update-center-runtime.test.ts
T

79 lines
1.9 KiB
TypeScript

import { fireEvent, render, screen } from "@testing-library/vue";
import { beforeEach, describe, expect, it, vi } from "vitest";
import App from "@/App.vue";
const invoke = vi.fn();
const updateCenterOpen = vi.fn();
vi.mock("axios", () => {
const get = vi.fn(async () => ({ data: [] }));
return {
default: {
create: () => ({ get }),
},
};
});
describe("App update center runtime", () => {
beforeEach(() => {
invoke.mockReset();
updateCenterOpen.mockReset();
invoke.mockImplementation(async (channel: string) => {
if (channel === "get-store-filter") return "both";
if (channel === "check-spark-available") return true;
if (channel === "check-apm-available") return true;
if (channel === "get-app-version") return "5.0.0";
return [];
});
Object.assign(window.ipcRenderer, {
invoke,
on: vi.fn(),
off: vi.fn(),
send: vi.fn(),
});
Object.assign(window, {
updateCenter: {
open: updateCenterOpen.mockResolvedValue({
items: [],
tasks: [],
warnings: [],
hasRunningTasks: false,
}),
refresh: vi.fn(),
ignore: vi.fn(),
unignore: vi.fn(),
start: vi.fn(),
cancel: vi.fn(),
getState: vi.fn(),
onState: vi.fn(),
offState: vi.fn(),
},
});
window.apm_store.arch = "amd64";
vi.stubGlobal(
"matchMedia",
vi.fn(() => ({
matches: false,
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
})),
);
});
it("opens update center with an empty snapshot without throwing", async () => {
render(App);
await fireEvent.click(await screen.findByText("软件更新"));
expect(updateCenterOpen).toHaveBeenCalledWith("both");
expect(await screen.findByText("暂无可展示的更新任务")).toBeTruthy();
});
});