完成上传下载连接,公告管理与详情页面,求种区页面,轮播图折扣显示,修改部分bug
Change-Id: I86fc294e32911cb3426a8b16f90aca371f975c11
diff --git a/src/api/requestPost.test.js b/src/api/requestPost.test.js
new file mode 100644
index 0000000..a3bccc6
--- /dev/null
+++ b/src/api/requestPost.test.js
@@ -0,0 +1,147 @@
+import MockAdapter from 'axios-mock-adapter';
+import { api } from './auth';
+import {
+ createRequestPost,
+ getRequestPosts,
+ getRequestPostDetail,
+ likeRequestPost,
+ addRequestPostComment,
+ deleteRequestPost,
+ searchRequestPosts
+} from './requestPost';
+
+describe('求种帖API', () => {
+ let mockAxios;
+
+ beforeEach(() => {
+ mockAxios = new MockAdapter(api);
+ });
+
+ afterEach(() => {
+ mockAxios.restore();
+ });
+
+ describe('createRequestPost - 创建求种帖', () => {
+ it('应该正确发送无图片帖子数据', async () => {
+ const postData = {
+ title: '求种测试标题',
+ content: '求种测试内容',
+ authorId: 'user123'
+ };
+
+ mockAxios.onPost('/request/posts').reply(config => {
+ const data = config.data;
+ expect(data.get('title')).toBe(postData.title);
+ expect(data.get('content')).toBe(postData.content);
+ expect(data.get('authorId')).toBe(postData.authorId);
+ expect(data.has('image')).toBe(false);
+ return [201, { code: 201 }];
+ });
+
+ const response = await createRequestPost(
+ postData.title,
+ postData.content,
+ postData.authorId
+ );
+ expect(response.status).toBe(201);
+ });
+
+ it('应该正确处理带图片的帖子', async () => {
+ const postData = {
+ title: '求种测试标题',
+ content: '求种测试内容',
+ authorId: 'user123',
+ selectedImage: new File(['content'], 'request.jpg')
+ };
+
+ mockAxios.onPost('/request/posts').reply(config => {
+ const data = config.data;
+ expect(data.get('image')).toBeInstanceOf(File);
+ return [201, { code: 201 }];
+ });
+
+ const response = await createRequestPost(
+ postData.title,
+ postData.content,
+ postData.authorId,
+ postData.selectedImage
+ );
+ expect(response.status).toBe(201);
+ });
+ });
+
+ describe('getRequestPosts - 获取求种帖列表', () => {
+ it('应该支持分页参数', async () => {
+ const page = 2, size = 10;
+ mockAxios.onGet('/request/posts', { params: { page, size } })
+ .reply(200, {
+ code: 200,
+ data: {
+ records: [],
+ total: 0
+ }
+ });
+
+ const response = await getRequestPosts(page, size);
+ expect(response.status).toBe(200);
+ expect(response.data.data).toBeDefined();
+ });
+ });
+
+ describe('getRequestPostDetail - 获取求种帖详情', () => {
+ it('应该正确获取帖子详情', async () => {
+ const postId = 'req123';
+ mockAxios.onGet(`/request/posts/${postId}`)
+ .reply(200, {
+ code: 200,
+ data: {
+ post: {
+ id: postId,
+ title: '测试求种帖'
+ }
+ }
+ });
+
+ const response = await getRequestPostDetail(postId);
+ expect(response.status).toBe(200);
+ expect(response.data.data.post.id).toBe(postId);
+ });
+ });
+
+
+
+ describe('deleteRequestPost - 删除求种帖', () => {
+ it('应该正确发送删除请求', async () => {
+ const postId = 'req101';
+ const authorId = 'user1';
+
+ mockAxios.onDelete(`/request/posts/${postId}`, {
+ params: { authorId }
+ }).reply(200, { code: 200 });
+
+ const response = await deleteRequestPost(postId, authorId);
+ expect(response.status).toBe(200);
+ });
+ });
+
+ describe('searchRequestPosts - 搜索求种帖', () => {
+ it('应该正确发送搜索请求', async () => {
+ const keyword = '测试';
+ const page = 1, size = 5;
+
+ mockAxios.onGet('/request/posts/search', {
+ params: { keyword, page, size }
+ }).reply(200, {
+ code: 200,
+ data: {
+ records: [],
+ total: 0
+ }
+ });
+
+ const response = await searchRequestPosts(keyword, page, size);
+ expect(response.status).toBe(200);
+ expect(response.data.data).toBeDefined();
+ });
+ });
+});
\ No newline at end of file