mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-06-22 14:13:49 +08:00
79 lines
1.9 KiB
TypeScript
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();
|
|
});
|
|
});
|