machine.spec.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import { describe, it, expect, vi, beforeEach } from 'vitest'
  2. import { listMachines, getMachine, addMachine, updateMachine, deleteMachine } from '@/api/machine'
  3. import * as request from '@/utils/request'
  4. vi.mock('@/utils/request', () => ({
  5. get: vi.fn(),
  6. post: vi.fn()
  7. }))
  8. describe('Machine API', () => {
  9. beforeEach(() => {
  10. vi.clearAllMocks()
  11. })
  12. describe('listMachines', () => {
  13. it('should call GET /admin/machines/list', async () => {
  14. const mockResponse = {
  15. code: 200,
  16. message: 'success',
  17. data: [
  18. {
  19. id: 1,
  20. machineId: 'machine-001',
  21. name: '测试机器1',
  22. location: '一楼',
  23. description: '测试用',
  24. enabled: true,
  25. cameraCount: 2,
  26. createdAt: '2024-01-01 00:00:00',
  27. updatedAt: '2024-01-01 00:00:00'
  28. }
  29. ]
  30. }
  31. vi.mocked(request.get).mockResolvedValue(mockResponse)
  32. const result = await listMachines()
  33. expect(request.get).toHaveBeenCalledWith('/admin/machines/list')
  34. expect(result.code).toBe(200)
  35. expect(result.data).toHaveLength(1)
  36. expect(result.data[0].machineId).toBe('machine-001')
  37. })
  38. })
  39. describe('getMachine', () => {
  40. it('should call GET /admin/machines/detail with id', async () => {
  41. const mockResponse = {
  42. code: 200,
  43. message: 'success',
  44. data: {
  45. id: 1,
  46. machineId: 'machine-001',
  47. name: '测试机器1',
  48. location: '一楼',
  49. description: '测试用',
  50. enabled: true,
  51. cameraCount: 2
  52. }
  53. }
  54. vi.mocked(request.get).mockResolvedValue(mockResponse)
  55. const result = await getMachine(1)
  56. expect(request.get).toHaveBeenCalledWith('/admin/machines/detail', { id: 1 })
  57. expect(result.code).toBe(200)
  58. expect(result.data.id).toBe(1)
  59. })
  60. })
  61. describe('addMachine', () => {
  62. it('should call POST /admin/machines/add with data', async () => {
  63. const mockResponse = {
  64. code: 200,
  65. message: '新增成功',
  66. data: {
  67. id: 1,
  68. machineId: 'machine-002',
  69. name: '新机器',
  70. location: '二楼',
  71. description: '新增测试',
  72. enabled: true,
  73. cameraCount: 0
  74. }
  75. }
  76. vi.mocked(request.post).mockResolvedValue(mockResponse)
  77. const addData = {
  78. machineId: 'machine-002',
  79. name: '新机器',
  80. location: '二楼',
  81. description: '新增测试'
  82. }
  83. const result = await addMachine(addData)
  84. expect(request.post).toHaveBeenCalledWith('/admin/machines/add', addData)
  85. expect(result.code).toBe(200)
  86. expect(result.data.machineId).toBe('machine-002')
  87. })
  88. })
  89. describe('updateMachine', () => {
  90. it('should call POST /admin/machines/update with data', async () => {
  91. const mockResponse = {
  92. code: 200,
  93. message: '修改成功',
  94. data: {
  95. id: 1,
  96. machineId: 'machine-001',
  97. name: '更新后名称',
  98. location: '三楼',
  99. description: '已更新',
  100. enabled: false,
  101. cameraCount: 2
  102. }
  103. }
  104. vi.mocked(request.post).mockResolvedValue(mockResponse)
  105. const updateData = {
  106. id: 1,
  107. name: '更新后名称',
  108. location: '三楼',
  109. description: '已更新',
  110. enabled: false
  111. }
  112. const result = await updateMachine(updateData)
  113. expect(request.post).toHaveBeenCalledWith('/admin/machines/update', updateData)
  114. expect(result.code).toBe(200)
  115. expect(result.data.name).toBe('更新后名称')
  116. })
  117. })
  118. describe('deleteMachine', () => {
  119. it('should call POST /admin/machines/delete with id', async () => {
  120. const mockResponse = {
  121. code: 200,
  122. message: '删除成功',
  123. data: null
  124. }
  125. vi.mocked(request.post).mockResolvedValue(mockResponse)
  126. const result = await deleteMachine(1)
  127. expect(request.post).toHaveBeenCalledWith('/admin/machines/delete', undefined, {
  128. params: { id: 1 }
  129. })
  130. expect(result.code).toBe(200)
  131. })
  132. it('should handle delete failure', async () => {
  133. const mockResponse = {
  134. code: 400,
  135. message: '该机器下存在摄像头,无法删除',
  136. data: null
  137. }
  138. vi.mocked(request.post).mockResolvedValue(mockResponse)
  139. const result = await deleteMachine(1)
  140. expect(result.code).toBe(400)
  141. expect(result.message).toBe('该机器下存在摄像头,无法删除')
  142. })
  143. })
  144. })