mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-09-16 14:57:15 +00:00
fix(bots): highlight unsupported processor events and show overlap
This commit is contained in:
@@ -14,7 +14,10 @@ const exports = {};
|
||||
new Function(
|
||||
'exports',
|
||||
ts.transpileModule(source, {
|
||||
compilerOptions: { module: ts.ModuleKind.CommonJS },
|
||||
compilerOptions: {
|
||||
module: ts.ModuleKind.CommonJS,
|
||||
target: ts.ScriptTarget.ES2022,
|
||||
},
|
||||
}).outputText,
|
||||
)(exports);
|
||||
|
||||
@@ -34,3 +37,56 @@ for (const [supported, required, covered] of [
|
||||
assert.equal(exports.eventPatternCovers(supported, required), covered);
|
||||
});
|
||||
}
|
||||
|
||||
test('processor events put covered declarations first and report only the intersection', () => {
|
||||
const result = exports.processorEventCompatibility(
|
||||
[
|
||||
'group.member_joined',
|
||||
'message.received',
|
||||
'friend.request_received',
|
||||
'message.received',
|
||||
],
|
||||
['message.received', 'message.edited'],
|
||||
);
|
||||
assert.deepEqual(result.entries, [
|
||||
{ pattern: 'message.received', supported: true },
|
||||
{ pattern: 'group.member_joined', supported: false },
|
||||
{ pattern: 'friend.request_received', supported: false },
|
||||
]);
|
||||
assert.deepEqual(result.matchingEvents, ['message.received']);
|
||||
});
|
||||
|
||||
test('wildcard subscriptions show matching concrete adapter events without claiming full coverage', () => {
|
||||
const result = exports.processorEventCompatibility(
|
||||
['group.*'],
|
||||
['group.member_joined', 'message.received'],
|
||||
);
|
||||
assert.deepEqual(result.entries, [{ pattern: 'group.*', supported: false }]);
|
||||
assert.deepEqual(result.matchingEvents, ['group.member_joined']);
|
||||
assert.deepEqual(
|
||||
exports.processorEventCompatibility(['*'], ['message.received'])
|
||||
.matchingEvents,
|
||||
['message.received'],
|
||||
);
|
||||
});
|
||||
|
||||
test('adapter wildcards cover concrete subscriptions without expanding the intersection', () => {
|
||||
const result = exports.processorEventCompatibility(
|
||||
['group.member_joined'],
|
||||
['group.*'],
|
||||
);
|
||||
assert.equal(result.entries[0].supported, true);
|
||||
assert.deepEqual(result.matchingEvents, ['group.member_joined']);
|
||||
});
|
||||
|
||||
test('legacy adapters default to messages and unmatched subscriptions have an empty intersection', () => {
|
||||
assert.deepEqual(
|
||||
exports.processorEventCompatibility(['*'], []).matchingEvents,
|
||||
['message.received'],
|
||||
);
|
||||
assert.deepEqual(
|
||||
exports.processorEventCompatibility(['group.*'], []).matchingEvents,
|
||||
[],
|
||||
);
|
||||
assert.deepEqual(exports.processorEventCompatibility([], []).entries, []);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user