55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import { loadQqbotPluginMetadata } from '@test-source/apps/web-antdv-next/src/views/qqbot/plugin/metadata';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
describe('qqbot plugin page metadata', () => {
|
|
it('keeps plugin page metadata loading from rejecting when plugin list fails', async () => {
|
|
const error = { code: 500, msg: 'plugin list failed' };
|
|
const onError = vi.fn();
|
|
|
|
await expect(
|
|
loadQqbotPluginMetadata({
|
|
labelOf: (value, fallback) => fallback ?? String(value),
|
|
loadPlugins: () => Promise.reject(error),
|
|
onError,
|
|
reloadTriggerModes: () =>
|
|
Promise.resolve([{ label: '命令', value: 'command' }]),
|
|
}),
|
|
).resolves.toEqual({
|
|
pluginMap: {},
|
|
pluginOptions: [],
|
|
});
|
|
|
|
expect(onError).toHaveBeenCalledWith(error);
|
|
});
|
|
|
|
it('builds plugin map and options after trigger mode dictionary is reloaded', async () => {
|
|
const plugin = {
|
|
description: 'BangDream commands',
|
|
key: 'bangdream',
|
|
name: 'BangDream',
|
|
operationCount: 12,
|
|
triggerMode: 'command',
|
|
version: '1.0.0',
|
|
} as const;
|
|
|
|
await expect(
|
|
loadQqbotPluginMetadata({
|
|
labelOf: (value) => (value === 'command' ? '命令' : String(value)),
|
|
loadPlugins: () => Promise.resolve([plugin]),
|
|
reloadTriggerModes: () =>
|
|
Promise.resolve([{ label: '命令', value: 'command' }]),
|
|
}),
|
|
).resolves.toEqual({
|
|
pluginMap: {
|
|
bangdream: plugin,
|
|
},
|
|
pluginOptions: [
|
|
{
|
|
label: 'BangDream (bangdream / 命令)',
|
|
value: 'bangdream',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|