Files
memind/cursor-channel-features.test.mjs
T

50 lines
1.6 KiB
JavaScript
Raw Normal View History

import test from 'node:test';
import assert from 'node:assert/strict';
import {
CURSOR_CHANNEL_FEATURES,
CURSOR_TASK_KIND,
defaultCursorChannelFeatures,
intentAllowlistFromFeatures,
isCursorFeatureEnabled,
isCursorTaskKindEnabled,
normalizeCursorChannelFeatures,
} from './cursor-channel-features.mjs';
test('normalizeCursorChannelFeatures derives page.generate from legacy intent allowlist', () => {
const features = normalizeCursorChannelFeatures(null, {
intentAllowlist: ['page.generate'],
});
assert.equal(features.pageGenerate.enabled, true);
assert.equal(features.pageData.enabled, false);
});
test('isCursorTaskKindEnabled respects per-feature toggles', () => {
const policy = {
enabled: true,
features: {
...defaultCursorChannelFeatures(),
pageGenerate: { enabled: true },
pageData: { enabled: false },
},
};
assert.equal(isCursorTaskKindEnabled(policy, CURSOR_TASK_KIND.PAGE_GENERATION), true);
assert.equal(isCursorTaskKindEnabled(policy, CURSOR_TASK_KIND.PAGE_DATA), false);
});
test('intentAllowlistFromFeatures keeps wechat compatibility', () => {
const intents = intentAllowlistFromFeatures({
[CURSOR_CHANNEL_FEATURES.PAGE_GENERATE]: { enabled: true },
[CURSOR_CHANNEL_FEATURES.PAGE_DATA]: { enabled: true },
});
assert.deepEqual(intents, ['page.generate']);
});
test('isCursorFeatureEnabled requires master enabled flag', () => {
const policy = {
enabled: false,
features: defaultCursorChannelFeatures(),
};
policy.features.pageGenerate.enabled = true;
assert.equal(isCursorFeatureEnabled(policy, CURSOR_CHANNEL_FEATURES.PAGE_GENERATE), false);
});