| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import { describe, it, expect, vi, beforeEach } from 'vitest'
- // vi.hoisted 确保 mock 函数在 vi.mock 提升后可用
- const { mockGet, mockPost, mockPut, mockDelete } = vi.hoisted(() => ({
- mockGet: vi.fn(),
- mockPost: vi.fn(),
- mockPut: vi.fn(),
- mockDelete: vi.fn()
- }))
- vi.mock('../request', () => ({
- default: {
- get: mockGet,
- post: mockPost,
- put: mockPut,
- delete: mockDelete
- }
- }))
- import {
- resourcePageApi,
- resourceDetailApi,
- resourceSaveApi,
- resourceDeleteApi,
- resourceRelateApi,
- resourceUnrelateApi,
- costStatByProjectApi,
- costStatByTypeApi,
- resourceExportApi,
- resourceRenewApi,
- resourceRenewalsApi,
- resourceDeleteRenewalApi,
- procurementCostApi,
- procurementCostExportApi
- } from '../resource'
- describe('resource API', () => {
- beforeEach(() => {
- vi.clearAllMocks()
- })
- it('resourcePageApi 调用 GET /resource/page 并传入分页参数', async () => {
- mockGet.mockResolvedValue({ code: 200, data: { records: [], total: 0 } })
- const params = { pageNum: 1, pageSize: 10 }
- await resourcePageApi(params)
- expect(mockGet).toHaveBeenCalledWith('/resource/page', { params })
- })
- it('resourceDetailApi 调用 GET /resource/:id', async () => {
- mockGet.mockResolvedValue({ code: 200, data: {} })
- await resourceDetailApi(42)
- expect(mockGet).toHaveBeenCalledWith('/resource/42')
- })
- it('resourceSaveApi 调用 POST /resource', async () => {
- mockPost.mockResolvedValue({ code: 200 })
- const data = { name: 'test-resource' }
- await resourceSaveApi(data)
- expect(mockPost).toHaveBeenCalledWith('/resource', data)
- })
- it('resourceDeleteApi 调用 DELETE /resource/:id', async () => {
- mockDelete.mockResolvedValue({ code: 200 })
- await resourceDeleteApi(7)
- expect(mockDelete).toHaveBeenCalledWith('/resource/7')
- })
- it('resourceRelateApi 调用 POST /resource/relate', async () => {
- mockPost.mockResolvedValue({ code: 200 })
- const data = { projectId: 1, resourceIds: [10, 20] }
- await resourceRelateApi(data)
- expect(mockPost).toHaveBeenCalledWith('/resource/relate', data)
- })
- it('resourceUnrelateApi 调用 DELETE /resource/unrelate 带查询参数', async () => {
- mockDelete.mockResolvedValue({ code: 200 })
- await resourceUnrelateApi(1, 10)
- expect(mockDelete).toHaveBeenCalledWith('/resource/unrelate', { params: { projectId: 1, resourceId: 10 } })
- })
- it('costStatByProjectApi 调用 GET /resource/cost-stat/project', async () => {
- mockGet.mockResolvedValue({ code: 200, data: [] })
- await costStatByProjectApi('month')
- expect(mockGet).toHaveBeenCalledWith('/resource/cost-stat/project', { params: { range: 'month' } })
- })
- it('costStatByTypeApi 调用 GET /resource/cost-stat/type', async () => {
- mockGet.mockResolvedValue({ code: 200, data: [] })
- await costStatByTypeApi('quarter')
- expect(mockGet).toHaveBeenCalledWith('/resource/cost-stat/type', { params: { range: 'quarter' } })
- })
- it('resourceExportApi 调用 GET /resource/export 并设置 responseType blob', async () => {
- mockGet.mockResolvedValue(new Blob())
- const params = { name: 'test' }
- await resourceExportApi(params)
- expect(mockGet).toHaveBeenCalledWith('/resource/export', { params, responseType: 'blob' })
- })
- it('resourceRenewApi 调用 POST /resource/:id/renew', async () => {
- mockPost.mockResolvedValue({ code: 200 })
- const data = { cost: 100, durationCode: 5 }
- await resourceRenewApi(42, data)
- expect(mockPost).toHaveBeenCalledWith('/resource/42/renew', data)
- })
- it('resourceRenewalsApi 调用 GET /resource/:id/renewals', async () => {
- mockGet.mockResolvedValue({ code: 200, data: [] })
- await resourceRenewalsApi(42)
- expect(mockGet).toHaveBeenCalledWith('/resource/42/renewals')
- })
- it('resourceDeleteRenewalApi 调用 DELETE /resource/:id/renewals/:renewalId', async () => {
- mockDelete.mockResolvedValue({ code: 200 })
- await resourceDeleteRenewalApi(42, 99)
- expect(mockDelete).toHaveBeenCalledWith('/resource/42/renewals/99')
- })
- it('procurementCostApi 调用 GET /resource/procurement-cost', async () => {
- mockGet.mockResolvedValue({ code: 200, data: {} })
- const params = { pageNum: 1, pageSize: 20 }
- await procurementCostApi(params)
- expect(mockGet).toHaveBeenCalledWith('/resource/procurement-cost', { params })
- })
- it('procurementCostExportApi 调用 GET /resource/procurement-cost/export 带 blob', async () => {
- mockGet.mockResolvedValue(new Blob())
- const params = { month: '2026-08' }
- await procurementCostExportApi(params)
- expect(mockGet).toHaveBeenCalledWith('/resource/procurement-cost/export', { params, responseType: 'blob' })
- })
- })
|