Просмотр исходного кода

🔧 fix(server): 修复测试文件导入路径和类型错误

- 更新所有测试文件的导入路径为新的包路径
- 修复类型检查错误和undefined引用
- 确保使用server包自己的测试工具而非共享工具
- 修复的具体导入包括:
  - UserEntity, Role 从 @d8d/user-module 导入
  - AuthService 从 @d8d/auth-module 导入
  - FileService, MinioService 从 @d8d/file-module 导入
  - logger, AppDataSource 从 @d8d/shared-utils 导入
  - ConcreteCrudService 从 @d8d/shared-crud 导入

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 месяц назад
Родитель
Сommit
b0f3babc4d

+ 3 - 4
packages/server/tests/integration/auth.integration.test.ts

@@ -5,11 +5,10 @@ import {
   setupIntegrationDatabaseHooks,
   TestDataFactory
 } from '../utils/integration-test-db';
-import { UserEntity } from '../../src/modules/users/user.entity';
+import { UserEntity, UserService } from '@d8d/user-module';
 import { authRoutes } from '../../src/api';
-import { AuthService } from '../../src/modules/auth/auth.service';
-import { UserService } from '../../src/modules/users/user.service';
-import { DisabledStatus } from '../../src/share/types';
+import { AuthService } from '@d8d/auth-module';
+import { DisabledStatus } from '@d8d/shared-types';
 
 // 设置集成测试钩子
 setupIntegrationDatabaseHooks()

+ 9 - 8
packages/server/tests/integration/files.integration.test.ts

@@ -1,14 +1,14 @@
 import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
 import { testClient } from 'hono/testing';
-import { FileService } from '../../src/modules/files/file.service';
-import { authMiddleware } from '../../src/middleware/auth.middleware';
+import { FileService } from '@d8d/file-module';
+import { authMiddleware } from '@d8d/auth-module';
 import { fileApiRoutes } from '../../src/api';
-import { ConcreteCrudService } from '../../src/utils/concrete-crud.service';
+import { ConcreteCrudService } from '@d8d/shared-crud';
 
-vi.mock('../../src/modules/files/file.service');
-vi.mock('../../src/middleware/auth.middleware');
-vi.mock('../../src/data-source');
-vi.mock('../../src/utils/concrete-crud.service');
+vi.mock('@d8d/file-module');
+vi.mock('@d8d/auth-module');
+vi.mock('@d8d/shared-utils');
+vi.mock('@d8d/shared-crud');
 
 describe('File API Integration Tests', () => {
   let client: ReturnType<typeof testClient<typeof fileApiRoutes>>['api']['v1'];
@@ -647,7 +647,8 @@ describe('File API Integration Tests', () => {
           total: mockFiles.length
         }
       });
-      expect(vi.mocked(ConcreteCrudService).mock.results[0].value.getList).toHaveBeenCalledWith(1, 10, 'document', ['name', 'type', 'description'], undefined, ['uploadUser'], { id: 'DESC' }, undefined);
+      const mockInstance = vi.mocked(ConcreteCrudService).mock.results[0]?.value;
+      expect(mockInstance?.getList).toHaveBeenCalledWith(1, 10, 'document', ['name', 'type', 'description'], undefined, ['uploadUser'], { id: 'DESC' }, undefined);
     });
   });
 });

+ 3 - 3
packages/server/tests/integration/minio.integration.test.ts

@@ -1,11 +1,11 @@
 import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
-import { MinioService } from '../../src/modules/files/minio.service';
+import { MinioService } from '@d8d/file-module';
 import { Client } from 'minio';
-import { logger } from '../../src/utils/logger';
+import { logger } from '@d8d/shared-utils';
 
 // Mock dependencies
 vi.mock('minio');
-vi.mock('../../src/utils/logger');
+vi.mock('@d8d/shared-utils');
 
 // Mock process.env using vi.stubEnv for proper isolation
 beforeEach(() => {

+ 2 - 2
packages/server/tests/integration/users.integration.test.ts

@@ -7,8 +7,8 @@ import {
 } from '../utils/integration-test-db';
 import { IntegrationTestAssertions } from '../utils/integration-test-utils';
 import { userRoutes } from '../../src/api';
-import { AuthService } from '../../src/modules/auth/auth.service';
-import { UserService } from '../../src/modules/users/user.service';
+import { AuthService } from '@d8d/auth-module';
+import { UserService } from '@d8d/user-module';
 
 
 // 设置集成测试钩子

+ 6 - 6
packages/server/tests/unit/utils/backup.test.ts

@@ -25,7 +25,7 @@ vi.mock('fs', () => ({
 }))
 
 // Mock logger
-vi.mock('@/utils/logger', () => ({
+vi.mock('@d8d/shared-utils', () => ({
   logger: {
     db: vi.fn(),
     error: vi.fn(),
@@ -66,7 +66,7 @@ describe('DatabaseBackup', () => {
 
     it('应该在创建目录失败时抛出错误', async () => {
       const fs = await import('fs')
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       vi.mocked(fs.promises.mkdir).mockRejectedValueOnce(new Error('创建目录失败'))
 
@@ -147,7 +147,7 @@ describe('DatabaseBackup', () => {
   describe('cleanupOldBackups', () => {
     it('应该清理7天前的旧备份', async () => {
       const fs = await import('fs')
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       const now = Date.now()
       const oldFileTime = now - (8 * 24 * 60 * 60 * 1000) // 8天前
@@ -167,7 +167,7 @@ describe('DatabaseBackup', () => {
 
     it('应该在清理失败时记录错误但不抛出', async () => {
       const fs = await import('fs')
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       vi.mocked(fs.promises.readdir).mockRejectedValueOnce(new Error('读取目录失败'))
 
@@ -178,7 +178,7 @@ describe('DatabaseBackup', () => {
 
   describe('startScheduledBackups', () => {
     it('应该启动定时备份任务', async () => {
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       backup.startScheduledBackups()
 
@@ -189,7 +189,7 @@ describe('DatabaseBackup', () => {
 
   describe('stopScheduledBackups', () => {
     it('应该停止定时备份任务', async () => {
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       // 先启动再停止
       backup.startScheduledBackups()

+ 3 - 3
packages/server/tests/unit/utils/restore.test.ts

@@ -22,7 +22,7 @@ vi.mock('fs', async (importOriginal) => {
 })
 
 // Mock logger
-vi.mock('@/utils/logger', () => ({
+vi.mock('@d8d/shared-utils', () => ({
   logger: {
     db: vi.fn(),
     error: vi.fn(),
@@ -110,7 +110,7 @@ describe('DatabaseRestore', () => {
 
     it('应该在读取目录失败时返回null', async () => {
       const fs = await import('fs')
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       vi.mocked(fs.promises.readdir).mockRejectedValueOnce(new Error('读取目录失败'))
 
@@ -141,7 +141,7 @@ describe('DatabaseRestore', () => {
 
     it('应该在读取目录失败时返回空数组', async () => {
       const fs = await import('fs')
-      const { logger } = await import('@/utils/logger')
+      const { logger } = await import('@d8d/shared-utils')
 
       vi.mocked(fs.promises.readdir).mockRejectedValueOnce(new Error('读取目录失败'))
 

+ 2 - 3
packages/server/tests/utils/integration-test-db.ts

@@ -1,8 +1,7 @@
 import { DataSource } from 'typeorm';
 import { beforeEach, afterEach } from 'vitest';
-import { UserEntity } from '../../src/modules/users/user.entity';
-import { Role } from '../../src/modules/users/role.entity';
-import { AppDataSource } from '../../src/data-source';
+import { UserEntity, Role } from '@d8d/user-module';
+import { AppDataSource } from '@d8d/shared-utils';
 
 /**
  * 集成测试数据库工具类 - 使用真实PostgreSQL数据库

+ 1 - 1
packages/server/tests/utils/integration-test-utils.ts

@@ -1,5 +1,5 @@
 import { IntegrationTestDatabase } from './integration-test-db';
-import { UserEntity } from '../../src/modules/users/user.entity';
+import { UserEntity } from '@d8d/user-module';
 
 /**
  * 集成测试断言工具