Files
spark-store/src/__tests__/unit/WindowTitleBar.test.ts
T

40 lines
1.3 KiB
TypeScript

import { fireEvent, render, screen } from "@testing-library/vue";
import { beforeEach, describe, expect, it, vi } from "vitest";
import WindowTitleBar from "@/components/WindowTitleBar.vue";
const windowControls = {
minimize: vi.fn(),
toggleMaximize: vi.fn(),
close: vi.fn(),
};
describe("WindowTitleBar", () => {
beforeEach(() => {
vi.clearAllMocks();
Object.defineProperty(window, "windowControls", {
value: windowControls,
configurable: true,
});
});
it("sends window control requests", async () => {
render(WindowTitleBar);
await fireEvent.click(screen.getByRole("button", { name: "最小化" }));
await fireEvent.click(screen.getByRole("button", { name: "最大化或还原" }));
await fireEvent.click(screen.getByRole("button", { name: "关闭" }));
expect(windowControls.minimize).toHaveBeenCalledTimes(1);
expect(windowControls.toggleMaximize).toHaveBeenCalledTimes(1);
expect(windowControls.close).toHaveBeenCalledTimes(1);
});
it("stays below modal overlays in the stacking order", () => {
const { container } = render(WindowTitleBar);
expect(container.firstElementChild?.className).toContain("z-20");
expect(container.firstElementChild?.className).not.toContain("z-[60]");
});
});