import MockAdapter from 'axios-mock-adapter' import axios from '@/utils/request' import { fetchBoundFamilies, fetchFamilyOverview, fetchChildTasks, fetchPendingReviewTasks, reviewTask, batchReviewTasks, updateTask, deleteTask, bindFamily, getFamilyInviteCode } from '@/api/guideTask' let mock beforeEach(() => { mock = new MockAdapter(axios) }) afterEach(() => { mock.restore() }) describe('guideTask API', () => { test('fetchBoundFamilies sends POST', async () => { mock.onPost('/api/guide/families/bound-families').reply(200, { code: 200, data: [] }) const res = await fetchBoundFamilies() expect(res.code).toBe(200) }) test('fetchFamilyOverview sends POST with familyId', async () => { mock.onPost('/api/guide/families/100/overview').reply(200, { code: 200, data: {} }) const res = await fetchFamilyOverview(100) expect(res.code).toBe(200) }) test('fetchChildTasks sends POST with pagination params', async () => { mock.onPost('/api/guide/families/100/children/20/tasks').reply(200, { code: 200, data: {} }) const res = await fetchChildTasks(100, 20, 1, 10, 'pending') expect(res.code).toBe(200) }) test('fetchPendingReviewTasks sends POST', async () => { mock.onPost('/api/guide/families/100/children/20/pending-review').reply(200, { code: 200, data: [] }) const res = await fetchPendingReviewTasks(100, 20) expect(res.code).toBe(200) }) test('reviewTask sends POST with review data', async () => { mock.onPost('/api/guide/families/100/tasks/5/review').reply(200, { code: 200, data: true }) const res = await reviewTask(100, 5, { approved: true, comment: '好' }) expect(res.code).toBe(200) }) test('batchReviewTasks sends POST with taskIds', async () => { mock.onPost('/api/guide/families/100/tasks/batch-review').reply(200, { code: 200, data: { successCount: 3 } }) const res = await batchReviewTasks(100, [1, 2, 3], true) expect(res.data.successCount).toBe(3) }) test('updateTask sends PUT with data', async () => { mock.onPut('/api/guide/families/100/tasks/5').reply(200, { code: 200, data: true }) const res = await updateTask(100, 5, { title: '新标题' }) expect(res.code).toBe(200) }) test('deleteTask sends DELETE', async () => { mock.onDelete('/api/guide/families/100/tasks/5').reply(200, { code: 200, data: true }) const res = await deleteTask(100, 5) expect(res.code).toBe(200) }) test('bindFamily sends POST with familyId', async () => { mock.onPost('/api/guide/bind/family/200').reply(200, { code: 200, data: true }) const res = await bindFamily(200) expect(res.code).toBe(200) }) test('getFamilyInviteCode sends POST', async () => { mock.onPost('/api/guide/family/invite-code/200').reply(200, { code: 200, data: { code: 'ABC123' } }) const res = await getFamilyInviteCode(200) expect(res.data.code).toBe('ABC123') }) })