74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
jest.mock(
|
|
'@/qqbot/plugins/bangDream/renderer/qqbot-bangdream-renderer.service',
|
|
() => ({
|
|
QqbotBangDreamRendererService: class QqbotBangDreamRendererService {},
|
|
}),
|
|
);
|
|
|
|
jest.mock('@/qqbot/plugins/bangDream/tsugu/models/main-data-store', () => ({
|
|
__esModule: true,
|
|
default: {},
|
|
waitForMainDataReady: jest.fn().mockResolvedValue(undefined),
|
|
}));
|
|
|
|
import { ToolsService } from '@/common';
|
|
import { TsuguApplicationService } from '@/qqbot/plugins/bangDream/renderer/tsugu-application.service';
|
|
import { waitForMainDataReady } from '@/qqbot/plugins/bangDream/tsugu/models/main-data-store';
|
|
import type { QqbotBangDreamRendererService } from '@/qqbot/plugins/bangDream/renderer/qqbot-bangdream-renderer.service';
|
|
|
|
describe('TsuguApplicationService', () => {
|
|
let rendererService: jest.Mocked<QqbotBangDreamRendererService>;
|
|
let service: TsuguApplicationService;
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
rendererService = {
|
|
checkHealth: jest.fn().mockResolvedValue(true),
|
|
executeOperationHandler: jest.fn().mockResolvedValue({
|
|
imageCount: 1,
|
|
operationKey: 'bangdream.song.search',
|
|
query: '夏祭り',
|
|
replyText: '[CQ:image,file=base64://base64-song-card]',
|
|
source: 'Tsugu BangDream Bot 内置源码',
|
|
}),
|
|
refreshDictionaryCache: jest.fn().mockResolvedValue(undefined),
|
|
} as any;
|
|
service = new TsuguApplicationService(rendererService, new ToolsService());
|
|
});
|
|
|
|
it('refreshes dictionary cache during application bootstrap', async () => {
|
|
await service.onApplicationBootstrap();
|
|
|
|
expect(rendererService.refreshDictionaryCache).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('executes a registry operation through the renderer handler', async () => {
|
|
const result = await service.execute('bangdream.song.search', {
|
|
text: '夏祭り',
|
|
});
|
|
|
|
expect(waitForMainDataReady).toHaveBeenCalledTimes(1);
|
|
expect(rendererService.executeOperationHandler).toHaveBeenCalledWith(
|
|
'searchSong',
|
|
{
|
|
text: '夏祭り',
|
|
},
|
|
);
|
|
expect(result).toMatchObject({
|
|
imageCount: 1,
|
|
operationKey: 'bangdream.song.search',
|
|
query: '夏祭り',
|
|
});
|
|
});
|
|
|
|
it('normalizes command errors into string messages', async () => {
|
|
rendererService.executeOperationHandler.mockRejectedValueOnce(
|
|
'图片渲染失败',
|
|
);
|
|
|
|
await expect(
|
|
service.execute('bangdream.event.search', { text: '50' }),
|
|
).rejects.toThrow('图片渲染失败');
|
|
});
|
|
});
|