forked from lunanting/cangku
27 lines
1.6 KiB
JavaScript
27 lines
1.6 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { pruneRetiredSidebarConfig, cleanupRetiredFeatureSettings, isRetiredSystemConfigKey } = require('../src/services/retiredFeatures');
|
|
|
|
test('retired sidebar cleanup is recursive and idempotent', () => {
|
|
const saved = JSON.stringify({ entries: [{ key: 'agent' }, { key: 'manage', children: [{ key: 'ai-skill-tags' }, { key: 'settings', label: '管理设置' }] }] });
|
|
const clean = pruneRetiredSidebarConfig(saved);
|
|
assert.deepEqual(JSON.parse(clean).entries, [{ key: 'manage', children: [{ key: 'settings', label: '管理设置' }] }]);
|
|
assert.equal(pruneRetiredSidebarConfig(clean), clean);
|
|
assert.equal(pruneRetiredSidebarConfig('{invalid'), '{invalid');
|
|
assert.equal(isRetiredSystemConfigKey('openclaw_chat_skill_tags'), true);
|
|
assert.equal(isRetiredSystemConfigKey('site_name'), false);
|
|
});
|
|
|
|
test('upgrade removes only retired settings and permission rows', async () => {
|
|
const calls = [];
|
|
await cleanupRetiredFeatureSettings({ query: async (sql, params) => {
|
|
calls.push({ sql, params });
|
|
return sql.startsWith('SELECT') ? [{ config_value: '{"entries":[{"key":"agent"},{"key":"product-analysis"}]}' }] : [];
|
|
} });
|
|
const deletes = calls.filter((call) => call.sql.startsWith('DELETE'));
|
|
assert.equal(deletes.length, 4);
|
|
assert.ok(deletes.every((call) => call.sql.includes(' WHERE ') && call.params.length > 0));
|
|
const update = calls.find((call) => call.sql.startsWith('UPDATE'));
|
|
assert.deepEqual(JSON.parse(update.params[0]).entries, [{ key: 'product-analysis' }]);
|
|
});
|