blob: 99efd8c47ca33603805ae67d7bf641e4504ac534 [file] [log] [blame]
Akane121765b61a72025-05-17 13:52:25 +08001import MockAdapter from 'axios-mock-adapter';
2import { api } from './auth'; // 添加api导入
DREWae420b22025-06-02 14:07:20 +08003import { likeHelpPostComment, getHelpCommentReplies, addHelpCommentReply, deleteHelpComment } from './helpComment';
Akane121765b61a72025-05-17 13:52:25 +08004
5describe('求助帖评论API', () => {
6 let mockAxios;
7
8 beforeEach(() => {
9 mockAxios = new MockAdapter(api);
10 });
11
12 afterEach(() => {
13 mockAxios.restore();
14 });
15
DREWae420b22025-06-02 14:07:20 +080016 describe('likeHelpPostComment - 点赞求助帖评论', () => {
Akane121765b61a72025-05-17 13:52:25 +080017 it('应该成功发送点赞请求', async () => {
18 const mockResponse = { code: 200, message: '点赞成功' };
19 mockAxios.onPost('/help/comments/123/like').reply(200, mockResponse);
20
DREWae420b22025-06-02 14:07:20 +080021 const response = await likeHelpPostComment('123');
Akane121765b61a72025-05-17 13:52:25 +080022 expect(response.data).toEqual(mockResponse);
23 });
24 });
25
DREWae420b22025-06-02 14:07:20 +080026 describe('getHelpCommentReplies - 获取评论回复', () => {
Akane121765b61a72025-05-17 13:52:25 +080027 it('应该返回正确的回复数据结构', async () => {
28 const mockData = [{ id: '1', content: '回复内容' }];
29 mockAxios.onGet('/help/comments/456/replies').reply(200, { code: 200, data: mockData });
30
DREWae420b22025-06-02 14:07:20 +080031 const response = await getHelpCommentReplies('456');
Akane121765b61a72025-05-17 13:52:25 +080032 expect(response.data.data).toEqual(mockData);
33 });
34 });
35
DREWae420b22025-06-02 14:07:20 +080036 describe('addHelpCommentReply - 添加评论回复', () => {
Akane1217d1e9f712025-05-29 14:36:56 +080037 it('应该正确发送回复内容(无图片)', async () => {
38 const commentId = '789';
39 const replyData = {
40 authorId: 'user1',
41 content: '测试回复'
42 };
43
44 mockAxios.onPost(`/help/comments/${commentId}/replies`).reply(config => {
45 const data = config.data;
46 expect(data.get('authorId')).toBe(replyData.authorId);
47 expect(data.get('content')).toBe(replyData.content);
48 expect(data.has('image')).toBe(false);
49 return [200, { code: 200 }];
50 });
Akane121765b61a72025-05-17 13:52:25 +080051
DREWae420b22025-06-02 14:07:20 +080052 const response = await addHelpCommentReply(commentId, replyData);
Akane1217d1e9f712025-05-29 14:36:56 +080053 expect(response.status).toBe(200);
54 });
55 it('应该正确处理带图片的回复', async () => {
56 const commentId = '789';
57 const replyData = {
58 authorId: 'user1',
59 content: '测试回复',
60 image: new File(['content'], 'reply.jpg')
61 };
62
63 mockAxios.onPost(`/help/comments/${commentId}/replies`).reply(config => {
64 const data = config.data;
65 expect(data.get('image')).toBeInstanceOf(File);
66 return [200, { code: 200 }];
67 });
68
DREWae420b22025-06-02 14:07:20 +080069 const response = await addHelpCommentReply(commentId, replyData);
Akane1217d1e9f712025-05-29 14:36:56 +080070 expect(response.status).toBe(200);
71 });
72 });
DREWae420b22025-06-02 14:07:20 +080073 describe('deleteHelpComment - 删除评论', () => {
Akane1217d1e9f712025-05-29 14:36:56 +080074 it('应该正确发送删除请求', async () => {
75 const commentId = '101112';
76 const authorId = 'user1';
77
78 mockAxios.onDelete(`/help/comments/${commentId}`).reply(config => {
79 expect(config.params).toEqual({ authorId });
80 return [200, { code: 200 }];
81 });
82
DREWae420b22025-06-02 14:07:20 +080083 const response = await deleteHelpComment(commentId, authorId);
Akane121765b61a72025-05-17 13:52:25 +080084 expect(response.status).toBe(200);
85 });
86 });
87});