补一个索要资源的测试类
Change-Id: I494d1b9edec7865789e693e67d24f28ff40132d6
diff --git a/src/api/__tests__/request.test.js b/src/api/__tests__/request.test.js
new file mode 100644
index 0000000..a1a553f
--- /dev/null
+++ b/src/api/__tests__/request.test.js
@@ -0,0 +1,217 @@
+// src/api/__tests__/request.test.js
+const axios = require('axios');
+const {
+ createRequest,
+ updateMoney,
+ updateLoaduserByName,
+ updateTorrentid,
+ getTorrentid,
+ deleteRequest,
+ findByName,
+ findByUserid,
+ findByLoaduser,
+ getTotalMoneyByName,
+ getAllRequests,
+ getInfoByRequestId,
+} = require('../request');
+
+jest.mock('axios');
+
+describe('Request API Tests', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ test('createRequest should post form data with correct headers', async () => {
+ const formData = new FormData();
+ formData.append('title', 'Help');
+ axios.post.mockResolvedValue({ data: { success: true } });
+
+ const res = await createRequest(formData);
+
+ expect(axios.post).toHaveBeenCalledWith(
+ 'http://localhost:8080/request/create',
+ formData,
+ { headers: { 'Content-Type': 'multipart/form-data' } }
+ );
+ expect(res.data).toEqual({ success: true });
+ });
+
+ test('updateMoney should send PUT request with money param', async () => {
+ axios.put.mockResolvedValue({ data: true });
+
+ const res = await updateMoney(1, 100);
+
+ expect(axios.put).toHaveBeenCalledWith(
+ 'http://localhost:8080/request/updateMoney/1',
+ null,
+ { params: { money: 100 } }
+ );
+ expect(res.data).toBe(true);
+ });
+
+ test('updateLoaduserByName should send POST request with params', async () => {
+ axios.post.mockResolvedValue({ data: true });
+
+ const res = await updateLoaduserByName('testname', 10);
+
+ expect(axios.post).toHaveBeenCalledWith(
+ 'http://localhost:8080/request/updateLoaduserByName',
+ null,
+ { params: { name: 'testname', loaduser: 10 } }
+ );
+ expect(res.data).toBe(true);
+ });
+
+ test('updateTorrentid should send PUT request with params', async () => {
+ axios.put.mockResolvedValue({ data: true });
+
+ const res = await updateTorrentid(5, 'torrent123');
+
+ expect(axios.put).toHaveBeenCalledWith(
+ 'http://localhost:8080/request/updateTorrentid/5',
+ null,
+ { params: { torrentid: 'torrent123' } }
+ );
+ expect(res.data).toBe(true);
+ });
+
+ test('getTorrentid should fetch torrentid successfully', async () => {
+ axios.get.mockResolvedValue({ data: 'torrent123' });
+
+ const res = await getTorrentid(5);
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/getTorrentid/5');
+ expect(res).toBe('torrent123');
+ });
+
+ test('getTorrentid should return null on error', async () => {
+ axios.get.mockRejectedValue(new Error('fail'));
+
+ const res = await getTorrentid(5);
+
+ expect(res).toBeNull();
+ });
+
+ test('deleteRequest should send DELETE request', async () => {
+ axios.delete.mockResolvedValue({ data: true });
+
+ const res = await deleteRequest(3);
+
+ expect(axios.delete).toHaveBeenCalledWith('http://localhost:8080/request/delete/3');
+ expect(res.data).toBe(true);
+ });
+
+ test('findByName should return array on success', async () => {
+ axios.get.mockResolvedValue({ data: [{ id: 1 }] });
+
+ const res = await findByName('Alice');
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/findByName', {
+ params: { name: 'Alice' },
+ });
+ expect(res).toEqual([{ id: 1 }]);
+ });
+
+ test('findByName should return empty array on error', async () => {
+ axios.get.mockRejectedValue(new Error('fail'));
+
+ const res = await findByName('Alice');
+
+ expect(res).toEqual([]);
+ });
+
+ test('findByUserid should return array on success', async () => {
+ axios.get.mockResolvedValue({ data: [{ id: 2 }] });
+
+ const res = await findByUserid(10);
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/findByUserid', {
+ params: { userid: 10 },
+ });
+ expect(res).toEqual([{ id: 2 }]);
+ });
+
+ test('findByUserid should return empty array on error', async () => {
+ axios.get.mockRejectedValue(new Error('fail'));
+
+ const res = await findByUserid(10);
+
+ expect(res).toEqual([]);
+ });
+
+ test('findByLoaduser should return array on success', async () => {
+ axios.get.mockResolvedValue({ data: [{ id: 3 }] });
+
+ const res = await findByLoaduser(20);
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/findByLoaduser', {
+ params: { loaduser: 20 },
+ });
+ expect(res).toEqual([{ id: 3 }]);
+ });
+
+ test('findByLoaduser should return empty array on error', async () => {
+ axios.get.mockRejectedValue(new Error('fail'));
+
+ const res = await findByLoaduser(20);
+
+ expect(res).toEqual([]);
+ });
+
+ test('getTotalMoneyByName should return number on success', async () => {
+ axios.get.mockResolvedValue({ data: 123 });
+
+ const res = await getTotalMoneyByName('Bob');
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/totalMoneyByName', {
+ params: { name: 'Bob' },
+ });
+ expect(res).toBe(123);
+ });
+
+ test('getTotalMoneyByName should return 0 on error or invalid data', async () => {
+ axios.get.mockResolvedValue({ data: 'NaN' });
+
+ const res1 = await getTotalMoneyByName('Bob');
+ expect(res1).toBe(0);
+
+ axios.get.mockRejectedValue(new Error('fail'));
+ const res2 = await getTotalMoneyByName('Bob');
+ expect(res2).toBe(0);
+ });
+
+ test('getAllRequests should return array on success', async () => {
+ axios.get.mockResolvedValue({ data: [{ id: 4 }] });
+
+ const res = await getAllRequests();
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/all');
+ expect(res).toEqual([{ id: 4 }]);
+ });
+
+ test('getAllRequests should return empty array on error', async () => {
+ axios.get.mockRejectedValue(new Error('fail'));
+
+ const res = await getAllRequests();
+
+ expect(res).toEqual([]);
+ });
+
+ test('getInfoByRequestId should return object on success', async () => {
+ axios.get.mockResolvedValue({ data: { torrentid: 'abc', money: 100, loaduser: 10 } });
+
+ const res = await getInfoByRequestId(8);
+
+ expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/request/info/8');
+ expect(res).toEqual({ torrentid: 'abc', money: 100, loaduser: 10 });
+ });
+
+ test('getInfoByRequestId should return empty object on error', async () => {
+ axios.get.mockRejectedValue(new Error('fail'));
+
+ const res = await getInfoByRequestId(8);
+
+ expect(res).toEqual({});
+ });
+});