补一个索要资源的测试类

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({});
+    });
+});