guideTask.test.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import MockAdapter from 'axios-mock-adapter'
  2. import axios from '@/utils/request'
  3. import {
  4. fetchBoundFamilies,
  5. fetchFamilyOverview,
  6. fetchChildTasks,
  7. fetchPendingReviewTasks,
  8. reviewTask,
  9. batchReviewTasks,
  10. updateTask,
  11. deleteTask,
  12. bindFamily,
  13. getFamilyInviteCode
  14. } from '@/api/guideTask'
  15. let mock
  16. beforeEach(() => {
  17. mock = new MockAdapter(axios)
  18. })
  19. afterEach(() => {
  20. mock.restore()
  21. })
  22. describe('guideTask API', () => {
  23. test('fetchBoundFamilies sends POST', async () => {
  24. mock.onPost('/api/guide/families/bound-families').reply(200, { code: 200, data: [] })
  25. const res = await fetchBoundFamilies()
  26. expect(res.code).toBe(200)
  27. })
  28. test('fetchFamilyOverview sends POST with familyId', async () => {
  29. mock.onPost('/api/guide/families/100/overview').reply(200, { code: 200, data: {} })
  30. const res = await fetchFamilyOverview(100)
  31. expect(res.code).toBe(200)
  32. })
  33. test('fetchChildTasks sends POST with pagination params', async () => {
  34. mock.onPost('/api/guide/families/100/children/20/tasks').reply(200, { code: 200, data: {} })
  35. const res = await fetchChildTasks(100, 20, 1, 10, 'pending')
  36. expect(res.code).toBe(200)
  37. })
  38. test('fetchPendingReviewTasks sends POST', async () => {
  39. mock.onPost('/api/guide/families/100/children/20/pending-review').reply(200, { code: 200, data: [] })
  40. const res = await fetchPendingReviewTasks(100, 20)
  41. expect(res.code).toBe(200)
  42. })
  43. test('reviewTask sends POST with review data', async () => {
  44. mock.onPost('/api/guide/families/100/tasks/5/review').reply(200, { code: 200, data: true })
  45. const res = await reviewTask(100, 5, { approved: true, comment: '好' })
  46. expect(res.code).toBe(200)
  47. })
  48. test('batchReviewTasks sends POST with taskIds', async () => {
  49. mock.onPost('/api/guide/families/100/tasks/batch-review').reply(200, { code: 200, data: { successCount: 3 } })
  50. const res = await batchReviewTasks(100, [1, 2, 3], true)
  51. expect(res.data.successCount).toBe(3)
  52. })
  53. test('updateTask sends PUT with data', async () => {
  54. mock.onPut('/api/guide/families/100/tasks/5').reply(200, { code: 200, data: true })
  55. const res = await updateTask(100, 5, { title: '新标题' })
  56. expect(res.code).toBe(200)
  57. })
  58. test('deleteTask sends DELETE', async () => {
  59. mock.onDelete('/api/guide/families/100/tasks/5').reply(200, { code: 200, data: true })
  60. const res = await deleteTask(100, 5)
  61. expect(res.code).toBe(200)
  62. })
  63. test('bindFamily sends POST with familyId', async () => {
  64. mock.onPost('/api/guide/bind/family/200').reply(200, { code: 200, data: true })
  65. const res = await bindFamily(200)
  66. expect(res.code).toBe(200)
  67. })
  68. test('getFamilyInviteCode sends POST', async () => {
  69. mock.onPost('/api/guide/family/invite-code/200').reply(200, { code: 200, data: { code: 'ABC123' } })
  70. const res = await getFamilyInviteCode(200)
  71. expect(res.data.code).toBe('ABC123')
  72. })
  73. })