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

41 lines
1.3 KiB
TypeScript

import { readFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import { describe, expect, it } from "vitest";
const testDir = dirname(fileURLToPath(import.meta.url));
const mainSource = readFileSync(
resolve(testDir, "../../../electron/main/index.ts"),
"utf-8",
);
const preloadSource = readFileSync(
resolve(testDir, "../../../electron/preload/index.ts"),
"utf-8",
);
const viteEnvSource = readFileSync(
resolve(testDir, "../../vite-env.d.ts"),
"utf-8",
);
describe("frameless window shell config", () => {
it("creates the main BrowserWindow without a native frame", () => {
expect(mainSource).toMatch(/new BrowserWindow\(\{[\s\S]*frame:\s*false/);
});
it("routes titlebar close through the guarded BrowserWindow close path", () => {
expect(mainSource).toContain('ipcMain.on("window-control-close"');
expect(mainSource).toMatch(
/ipcMain\.on\("window-control-close"[\s\S]*win\?\.close\(\)/,
);
expect(mainSource).not.toMatch(
/ipcMain\.on\("window-control-close"[\s\S]*win\?\.destroy\(\)/,
);
});
it("exposes typed window controls from preload", () => {
expect(preloadSource).toContain('exposeInMainWorld("windowControls"');
expect(viteEnvSource).toContain("windowControls: WindowControlBridge");
});
});