kt-template-admin/test/api/qqbot/plugin.spec.ts

105 lines
3.0 KiB
TypeScript

import {
enableQqbotPluginInstallation,
getQqbotPluginAccountBindings,
getQqbotPluginOperationPage,
getQqbotPluginPlatformInstallations,
getQqbotPluginRuntimeEvents,
installLocalQqbotPluginPackage,
uploadQqbotPluginPackage,
validateQqbotPluginManifest,
} from '@test-source/apps/web-antdv-next/src/api/qqbot/plugin';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { requestClient } from '#/api/request';
vi.mock('#/api/request', () => ({
requestClient: {
get: vi.fn(),
getBaseUrl: vi.fn(() => ''),
post: vi.fn(),
},
}));
describe('qqbot plugin API wrappers', () => {
beforeEach(() => {
vi.clearAllMocks();
});
it('uses the paged plugin operation endpoint for KtTable', async () => {
const pageResult = {
list: [],
pageNo: 2,
pageSize: 1,
total: 3,
};
vi.mocked(requestClient.get).mockResolvedValueOnce(pageResult);
await expect(
getQqbotPluginOperationPage({
pageNo: 2,
pageSize: 1,
pluginKey: 'bangdream',
triggerMode: 'command',
}),
).resolves.toBe(pageResult);
expect(requestClient.get).toHaveBeenCalledWith(
'/qqbot/plugin/operation/page',
{
params: {
pageNo: 2,
pageSize: 1,
pluginKey: 'bangdream',
triggerMode: 'command',
},
},
);
});
it('owns plugin-platform management caller routes', async () => {
const manifest = { capabilities: [], key: 'demo' };
const packageBody = {
packageHash: 'sha256-demo',
packagePath: '.kt-workspace/qqbot-plugin-packages/demo.qqbot-plugin.json',
};
vi.mocked(requestClient.get).mockResolvedValue([]);
vi.mocked(requestClient.post).mockResolvedValue({});
await getQqbotPluginPlatformInstallations();
await uploadQqbotPluginPackage(packageBody);
await validateQqbotPluginManifest(manifest);
await installLocalQqbotPluginPackage(packageBody);
await enableQqbotPluginInstallation('installation-1');
await getQqbotPluginRuntimeEvents('demo');
await getQqbotPluginAccountBindings('demo');
expect(requestClient.get).toHaveBeenCalledWith(
'/qqbot/plugin-platform/installations',
);
expect(requestClient.post).toHaveBeenCalledWith(
'/qqbot/plugin-platform/upload',
packageBody,
);
expect(requestClient.post).toHaveBeenCalledWith(
'/qqbot/plugin-platform/validate',
{ manifest },
);
expect(requestClient.post).toHaveBeenCalledWith(
'/qqbot/plugin-platform/install-local',
packageBody,
);
expect(requestClient.post).toHaveBeenCalledWith(
'/qqbot/plugin-platform/enable',
{ id: 'installation-1' },
);
expect(requestClient.get).toHaveBeenCalledWith(
'/qqbot/plugin-platform/runtime-events',
{ params: { pluginId: 'demo' } },
);
expect(requestClient.get).toHaveBeenCalledWith(
'/qqbot/plugin-platform/account-bindings',
{ params: { pluginId: 'demo' } },
);
});
});