| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import { describe, it, expect, beforeEach } from 'vitest';
- import { testClient } from 'hono/testing';
- import { IntegrationTestDatabase, setupIntegrationDatabaseHooksWithEntities } from '@d8d/shared-test-util';
- import { JWTUtil } from '@d8d/shared-utils';
- import { UserEntity, Role } from '@d8d/user-module';
- import { File } from '@d8d/file-module';
- import { AreaEntity } from '@d8d/geo-areas';
- import salaryRoutes from '../../src/routes/salary.routes';
- import { SalaryLevel } from '../../src/entities/salary-level.entity';
- // 设置集成测试钩子
- setupIntegrationDatabaseHooksWithEntities([UserEntity, File, Role, AreaEntity, SalaryLevel])
- describe('薪资管理API集成测试(简化版)', () => {
- let client: ReturnType<typeof testClient<typeof salaryRoutes>>;
- let testToken: string;
- let testUser: UserEntity;
- let testProvince: AreaEntity;
- let testCity: AreaEntity;
- beforeEach(async () => {
- // 创建测试客户端
- client = testClient(salaryRoutes);
- // 获取数据源
- const dataSource = await IntegrationTestDatabase.getDataSource();
- // 创建测试用户
- const userRepository = dataSource.getRepository(UserEntity);
- testUser = userRepository.create({
- username: `test_user_${Date.now()}`,
- password: 'test_password',
- nickname: '测试用户',
- registrationSource: 'web'
- });
- await userRepository.save(testUser);
- // 生成测试用户的token
- testToken = JWTUtil.generateToken({
- id: testUser.id,
- username: testUser.username,
- roles: [{name:'user'}]
- });
- // 创建测试区域数据
- const areaRepository = dataSource.getRepository(AreaEntity);
- // 创建省份
- testProvince = areaRepository.create({
- code: '110000',
- name: '北京市',
- level: 1,
- parentId: null
- });
- await areaRepository.save(testProvince);
- // 创建城市
- testCity = areaRepository.create({
- code: '110100',
- name: '北京市',
- level: 2,
- parentId: testProvince.id
- });
- await areaRepository.save(testCity);
- });
- describe('基本功能测试', () => {
- it('应该成功创建薪资水平', async () => {
- const createData = {
- provinceId: testProvince.id,
- cityId: testCity.id,
- basicSalary: 5000.00
- };
- const response = await client.create.$post({
- json: createData
- }, {
- headers: {
- 'Authorization': `Bearer ${testToken}`
- }
- });
- expect(response.status).toBe(200);
- const result = await response.json();
- // 检查返回结果是否有错误码
- if ('code' in result) {
- // 如果有错误码,测试失败
- expect(result.code).not.toBe(400);
- expect(result.code).not.toBe(401);
- } else {
- // 成功情况
- expect(result).toHaveProperty('id');
- expect(result.provinceId).toBe(testProvince.id);
- expect(result.cityId).toBe(testCity.id);
- expect(result.basicSalary).toBe(5000.00);
- }
- });
- it('应该要求认证', async () => {
- const createData = {
- provinceId: testProvince.id,
- cityId: testCity.id,
- basicSalary: 5000.00
- };
- const response = await client.create.$post({
- json: createData
- // 不提供Authorization header
- });
- expect(response.status).toBe(401);
- });
- });
- });
|