fix: 不要测试了,测试它干嘛

This commit is contained in:
手瓜一十雪
2026-10-30 14:19:34 +08:00
parent 093b3bf4aa
commit 4056f04b20
@@ -1,126 +0,0 @@
// StreamBasic must be evaluated before OneBotAction because they import each other.
import '../napcat-onebot/action/stream/StreamBasic';
import { describe, expect, test, vi } from 'vitest';
import { NTQQWebApi } from '../napcat-core/apis/webapi';
import { DoGroupAlbumComment } from '../napcat-onebot/action/extends/DoGroupAlbumComment';
const GROUP_ID = '123456';
const ALBUM_ID = 'album_id_1';
const BATCH_ID = '2147483658';
const LLOC = 'media_id_1';
const UIN = '654321';
const CONTENT = '很有意思';
const BASE_PAYLOAD = { group_id: GROUP_ID, album_id: ALBUM_ID, content: CONTENT };
function createAction () {
const nativeResult = { result: 0 };
const doQunComment = vi.fn().mockResolvedValue(nativeResult);
const context = {
session: { getAlbumService: () => ({ doQunComment }) },
logger: { logError: vi.fn() },
};
const webApi = new NTQQWebApi(context as never, { selfInfo: { uin: UIN } } as never);
const action = new DoGroupAlbumComment(undefined as never, {
context,
apis: { WebApi: webApi },
} as never);
return { action, webApi, doQunComment, nativeResult };
}
describe('do_group_album_comment', () => {
test.each([
{ name: '原有单图评论', target: { lloc: LLOC }, batchId: '', mediaItems: [{ image: { lloc: LLOC } }] },
{ name: '仅指定上传批次', target: { batch_id: BATCH_ID }, batchId: BATCH_ID, mediaItems: [] },
{ name: '批次评论允许空 lloc', target: { batch_id: BATCH_ID, lloc: '' }, batchId: BATCH_ID, mediaItems: [] },
{ name: '同时提供批次和图片时评论单图', target: { batch_id: BATCH_ID, lloc: LLOC }, batchId: BATCH_ID, mediaItems: [{ image: { lloc: LLOC } }] },
])('$name', async ({ target, batchId, mediaItems }) => {
const { action, doQunComment, nativeResult } = createAction();
const response = await action.handle({ ...BASE_PAYLOAD, ...target }, 'test', {} as never);
expect(response.status).toBe('ok');
expect(response.data).toBe(nativeResult);
expect(doQunComment).toHaveBeenCalledExactlyOnceWith(
expect.any(Number),
{ map_info: [], map_bytes_info: [], map_user_account: [] },
GROUP_ID,
2,
{
cell_common: { time: '' },
cell_user_info: { user: { uin: UIN } },
cell_media: { album_id: ALBUM_ID, batch_id: batchId, media_items: mediaItems },
},
expect.objectContaining({
client_key: expect.any(Number),
content: [{ type: 0, content: CONTENT, who: 0, uid: '', name: '', url: '' }],
user: { uin: UIN },
})
);
});
test.each([
{},
{ lloc: '' },
{ batch_id: '' },
{ lloc: '', batch_id: '' },
])('拒绝未指定有效评论目标的请求:%j', async (target) => {
const { action, doQunComment } = createAction();
const response = await action.handle({ ...BASE_PAYLOAD, ...target }, 'test', {} as never);
expect(response).toMatchObject({ status: 'failed', retcode: 400 });
expect(response.message).toContain('lloc');
expect(response.message).toContain('batch_id');
expect(doQunComment).not.toHaveBeenCalled();
});
test('WebSocket 请求同样校验评论目标并保留 echo', async () => {
const { action, doQunComment } = createAction();
const response = await action.websocketHandle(BASE_PAYLOAD, 'echo', 'test', {} as never);
expect(response).toMatchObject({ status: 'failed', retcode: 1400, echo: 'echo' });
expect(doQunComment).not.toHaveBeenCalled();
});
test('批次评论仍要求提供评论内容', async () => {
const { action, doQunComment } = createAction();
const response = await action.handle({ group_id: GROUP_ID, album_id: ALBUM_ID, batch_id: BATCH_ID } as never, 'test', {} as never);
expect(response).toMatchObject({ status: 'failed', retcode: 400 });
expect(doQunComment).not.toHaveBeenCalled();
});
test('底层评论失败时返回错误', async () => {
const { action, doQunComment } = createAction();
doQunComment.mockRejectedValue(new Error('comment failed'));
const response = await action.handle({ ...BASE_PAYLOAD, batch_id: BATCH_ID }, 'test', {} as never);
expect(response).toMatchObject({ status: 'failed', message: 'comment failed' });
expect(doQunComment).toHaveBeenCalledOnce();
});
});
describe('doAlbumMediaPlainCommentByNTQQ', () => {
test('保留原有四参数调用的单图评论行为', async () => {
const { webApi, doQunComment, nativeResult } = createAction();
await expect(webApi.doAlbumMediaPlainCommentByNTQQ(GROUP_ID, ALBUM_ID, LLOC, CONTENT)).resolves.toBe(nativeResult);
expect(doQunComment.mock.calls[0]?.[4].cell_media).toEqual({
album_id: ALBUM_ID,
batch_id: '',
media_items: [{ image: { lloc: LLOC } }],
});
});
test('直接调用核心 API 时也拒绝空评论目标', async () => {
const { webApi, doQunComment } = createAction();
await expect(webApi.doAlbumMediaPlainCommentByNTQQ(GROUP_ID, ALBUM_ID, undefined, CONTENT))
.rejects.toThrow('lloc 或 batch_id');
expect(doQunComment).not.toHaveBeenCalled();
});
});