update
This commit is contained in:
70
test/fav-list-limit.test.js
Normal file
70
test/fav-list-limit.test.js
Normal file
@@ -0,0 +1,70 @@
|
||||
'use strict';
|
||||
const assert = require('node:assert');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
const rendererSrc = fs.readFileSync(
|
||||
path.join(__dirname, '..', 'renderer', 'renderer.js'), 'utf8'
|
||||
);
|
||||
const preloadSrc = fs.readFileSync(
|
||||
path.join(__dirname, '..', 'preload.js'), 'utf8'
|
||||
);
|
||||
|
||||
let passed = 0;
|
||||
function check(name, fn) {
|
||||
try { fn(); console.log(' ok -', name); passed++; }
|
||||
catch (e) { console.error(' FAIL -', name, e.message); process.exitCode = 1; }
|
||||
}
|
||||
|
||||
check('renderer 调用 favList 不传硬编码 limit', () => {
|
||||
// displayLimit 改由配置驱动(默认 300),renderer 不再硬编码 200。
|
||||
// 主进程 clips:list / favorites:list 在 limit=0 时回退到 appConfig.displayLimit。
|
||||
const reload = rendererSrc.match(/async\s+function\s+reload\s*\(\s*\)\s*\{[\s\S]*?\n\}/);
|
||||
assert.ok(reload, '找不到 reload()');
|
||||
const call = reload[0].match(/favList\s*\([^)]*\)/);
|
||||
assert.ok(call, 'reload() 找不到 favList 调用');
|
||||
assert.ok(
|
||||
!/,\s*200\s*\)/.test(call[0]) && !/,\s*5000\s*\)/.test(call[0]),
|
||||
`favList 不应再传硬编码 200/5000,实际是: ${call[0]}`
|
||||
);
|
||||
});
|
||||
|
||||
check('renderer 收藏 Tab 的徽标不用 clips.length', () => {
|
||||
// 切到 favorites 时,$favCount.textContent 不能来自 clips.length
|
||||
// (被 200 截断后会失真)。
|
||||
const favText = rendererSrc.match(/\$favCount\.textContent\s*=\s*[^;]+;/g) || [];
|
||||
for (const line of favText) {
|
||||
assert.ok(
|
||||
!/clips\.length/.test(line),
|
||||
`徽标计数值不能从 clips.length 取(限制 200 后会失真): ${line}`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
check('setTab 切到 favorites 时先 updateFavCount 再 reload', () => {
|
||||
const setTab = rendererSrc.match(/function\s+setTab\s*\(\s*\w+\s*\)\s*\{[\s\S]*?\n\}/);
|
||||
assert.ok(setTab, '找不到 setTab');
|
||||
// 切到 favorites 的分支里,两个调用都得出现;顺序 updateFavCount 必须先于 reload
|
||||
const idxFav = setTab[0].indexOf("'favorites'");
|
||||
assert.ok(idxFav >= 0, 'setTab 找不到 favorites 分支');
|
||||
// 截 favorites 分支之后到函数末尾
|
||||
const favBranch = setTab[0].slice(idxFav);
|
||||
const idxCount = favBranch.indexOf('updateFavCount');
|
||||
const idxReload = favBranch.indexOf('reload');
|
||||
assert.ok(idxCount >= 0, '切到 favorites 时没调 updateFavCount()');
|
||||
assert.ok(idxReload >= 0, '切到 favorites 时没调 reload()');
|
||||
assert.ok(idxCount < idxReload, '必须先 updateFavCount 再 reload');
|
||||
});
|
||||
|
||||
check('preload favList 把第二个参数 limit 透传给 IPC', () => {
|
||||
// preload 的 favoritesApi.list 必须接收并转发 limit。
|
||||
// 之前传 5000,现在传 0:主进程在 limit <= 0 时回退到 appConfig.displayLimit。
|
||||
const call = preloadSrc.match(/list:\s*\(query,\s*limit\)\s*=>\s*ipcRenderer\.invoke\(\s*'favorites:list'[^)]*\)/);
|
||||
assert.ok(call, 'preload favorites list 没有 (query, limit) 签名或没转发 limit');
|
||||
assert.ok(
|
||||
/limit:\s*limit\s*\|\|\s*0/.test(call[0]),
|
||||
`preload favList 必须把 limit 透传(limit: limit || 0),实际: ${call[0]}`
|
||||
);
|
||||
});
|
||||
|
||||
console.log(`\n${passed} checks passed`);
|
||||
Reference in New Issue
Block a user