stats.spec.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { describe, it, expect, vi, beforeEach } from 'vitest'
  2. import { getDashboardStats } from '@/api/stats'
  3. import * as request from '@/utils/request'
  4. vi.mock('@/utils/request', () => ({
  5. get: vi.fn()
  6. }))
  7. describe('Stats API', () => {
  8. beforeEach(() => {
  9. vi.clearAllMocks()
  10. })
  11. describe('getDashboardStats', () => {
  12. it('should call GET /admin/stats/dashboard', async () => {
  13. const mockResponse = {
  14. code: 200,
  15. message: 'success',
  16. data: {
  17. machineTotal: 5,
  18. machineEnabled: 4,
  19. cameraTotal: 20,
  20. cameraOnline: 18,
  21. cameraOffline: 2,
  22. channelTotal: 40
  23. }
  24. }
  25. vi.mocked(request.get).mockResolvedValue(mockResponse)
  26. const result = await getDashboardStats()
  27. expect(request.get).toHaveBeenCalledWith('/admin/stats/dashboard')
  28. expect(result.code).toBe(200)
  29. expect(result.data.machineTotal).toBe(5)
  30. expect(result.data.cameraTotal).toBe(20)
  31. expect(result.data.cameraOnline).toBe(18)
  32. })
  33. it('should handle empty stats', async () => {
  34. const mockResponse = {
  35. code: 200,
  36. message: 'success',
  37. data: {
  38. machineTotal: 0,
  39. machineEnabled: 0,
  40. cameraTotal: 0,
  41. cameraOnline: 0,
  42. cameraOffline: 0,
  43. channelTotal: 0
  44. }
  45. }
  46. vi.mocked(request.get).mockResolvedValue(mockResponse)
  47. const result = await getDashboardStats()
  48. expect(result.data.machineTotal).toBe(0)
  49. expect(result.data.cameraTotal).toBe(0)
  50. })
  51. it('should handle API error', async () => {
  52. const mockResponse = {
  53. code: 500,
  54. message: '服务器错误',
  55. data: null
  56. }
  57. vi.mocked(request.get).mockResolvedValue(mockResponse)
  58. const result = await getDashboardStats()
  59. expect(result.code).toBe(500)
  60. })
  61. })
  62. })