mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-08-07 04:33:57 +08:00
41 lines
1.3 KiB
TypeScript
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");
|
|
});
|
|
});
|