usrApi.test.ts 1.45 KB
import { describe, it, expect, vi, beforeEach } from 'vitest';

// 桩掉底层 axios 实例(request.ts 的 default 导出)
vi.mock('../../src/api/request', () => {
  return {
    default: {
      post: vi.fn(),
      get: vi.fn(),
    },
  };
});

import request from '../../src/api/request';
import { login, fetchCompanies } from '../../src/api/usrApi';

const mockedRequest = request as unknown as {
  post: ReturnType<typeof vi.fn>;
  get: ReturnType<typeof vi.fn>;
};

describe('usrApi', () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  it('login posts to /usr/login with sUserName/password/companyId', async () => {
    const result = {
      token: 'tk',
      user: { id: 1, sUserName: 'admin', sUserType: '超级管理员', sLanguage: '中文' },
    };
    mockedRequest.post.mockResolvedValue(result);
    const payload = { sUserName: 'admin', password: 'p', companyId: 9 };
    const ret = await login(payload);
    expect(mockedRequest.post).toHaveBeenCalledWith('/usr/login', payload);
    expect(ret).toEqual(result);
  });

  it('fetchCompanies gets /usr/companies and returns list', async () => {
    const list = [
      { id: 1, sCompanyName: '甲公司', sVersion: '标准版' },
      { id: 2, sCompanyName: '乙公司', sVersion: null },
    ];
    mockedRequest.get.mockResolvedValue(list);
    const ret = await fetchCompanies();
    expect(mockedRequest.get).toHaveBeenCalledWith('/usr/companies');
    expect(ret).toEqual(list);
  });
});