This commit is contained in:
2026-09-12 13:59:12 +08:00
commit 941ce4baab
71 changed files with 13037 additions and 0 deletions

51
test/tray-menu.test.js Normal file
View File

@@ -0,0 +1,51 @@
'use strict';
const assert = require('node:assert');
const { buildTrayMenuTemplate } = require('../tray-menu.js');
let passed = 0;
function check(name, fn) {
try { fn(); console.log(' ok -', name); passed++; }
catch (e) { console.error(' FAIL -', name, '\n', e.message); process.exitCode = 1; }
}
const noop = () => {};
const actions = { onShow: noop, onSettings: noop, onQuit: noop };
check('菜单只有 3 个可点项', () => {
const items = buildTrayMenuTemplate(actions).filter((i) => i.type !== 'separator');
assert.strictEqual(items.length, 3,
`期望 3 项,实际 ${items.length}${items.map((i) => i.label).join(' / ')}`);
});
check('菜单项顺序与文案固定', () => {
const t = buildTrayMenuTemplate(actions);
assert.deepStrictEqual(
t.map((i) => (i.type === 'separator' ? '---' : i.label)),
['显示历史', '设置...', '---', '退出']
);
});
check('不再包含主题 / 强调色 / 快捷键 / 关于', () => {
const labels = buildTrayMenuTemplate(actions).map((i) => i.label || '').join('|');
for (const gone of ['主题', '强调色', '快捷键', '关于']) {
assert.ok(!labels.includes(gone), `${gone}」应已迁移到设置窗口`);
}
});
check('没有任何子菜单', () => {
const t = buildTrayMenuTemplate(actions);
assert.ok(t.every((i) => !i.submenu), '托盘不应再有子菜单');
});
check('click 回调按顺序接线到传入的动作', () => {
const calls = [];
const t = buildTrayMenuTemplate({
onShow: () => calls.push('show'),
onSettings: () => calls.push('settings'),
onQuit: () => calls.push('quit'),
});
for (const i of t) if (typeof i.click === 'function') i.click();
assert.deepStrictEqual(calls, ['show', 'settings', 'quit']);
});
console.log(`\n${passed} checks passed`);