diff --git a/electron.vite.config.ts b/electron.vite.config.ts index c0af436f0d..ccb020ce7d 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -26,7 +26,8 @@ export default defineConfig({ '@shared': resolve('packages/shared'), '@logger': resolve('src/main/services/LoggerService'), '@mcp-trace/trace-core': resolve('packages/mcp-trace/trace-core'), - '@mcp-trace/trace-node': resolve('packages/mcp-trace/trace-node') + '@mcp-trace/trace-node': resolve('packages/mcp-trace/trace-node'), + '@test-mocks': resolve('tests/__mocks__') } }, build: { @@ -112,7 +113,8 @@ export default defineConfig({ '@cherrystudio/extension-table-plus': resolve('packages/extension-table-plus/src'), '@cherrystudio/ai-sdk-provider': resolve('packages/ai-sdk-provider/src'), '@cherrystudio/ui/icons': resolve('packages/ui/src/components/icons'), - '@cherrystudio/ui': resolve('packages/ui/src') + '@cherrystudio/ui': resolve('packages/ui/src'), + '@test-mocks': resolve('tests/__mocks__') } }, optimizeDeps: { diff --git a/src/main/services/__tests__/AppUpdater.test.ts b/src/main/services/__tests__/AppUpdater.test.ts index babc76ca81..7d18b0e4c7 100644 --- a/src/main/services/__tests__/AppUpdater.test.ts +++ b/src/main/services/__tests__/AppUpdater.test.ts @@ -14,7 +14,7 @@ vi.mock('@logger', () => ({ // Mock PreferenceService using the existing mock vi.mock('@data/PreferenceService', async () => { - const { MockMainPreferenceServiceExport } = await import('../../../../tests/__mocks__/main/PreferenceService') + const { MockMainPreferenceServiceExport } = await import('@test-mocks/main/PreferenceService') return MockMainPreferenceServiceExport }) @@ -86,7 +86,7 @@ import { preferenceService } from '@data/PreferenceService' import { UpdateMirror } from '@shared/config/constant' import { app, net } from 'electron' -import { MockMainPreferenceServiceUtils } from '../../../../tests/__mocks__/main/PreferenceService' +import { MockMainPreferenceServiceUtils } from '@test-mocks/main/PreferenceService' import AppUpdater from '../AppUpdater' // Mock clientId for ConfigManager since it's not migrated yet diff --git a/tests/__mocks__/README.md b/tests/__mocks__/README.md index 789cbf0cea..38ba6286ec 100644 --- a/tests/__mocks__/README.md +++ b/tests/__mocks__/README.md @@ -43,6 +43,15 @@ Mocks are globally configured in setup files: - **Renderer**: `tests/renderer.setup.ts` - **Main**: `tests/main.setup.ts` +### Import Path Alias + +Use `@test-mocks/*` to import mock utilities: + +```typescript +import { MockCacheUtils } from '@test-mocks/renderer/CacheService' +import { MockMainCacheServiceUtils } from '@test-mocks/main/CacheService' +``` + --- ## Renderer Mocks @@ -89,7 +98,7 @@ Three-tier cache system with type-safe and casual (dynamic key) methods. ```typescript import { cacheService } from '@data/CacheService' -import { MockCacheUtils } from 'tests/__mocks__/renderer/CacheService' +import { MockCacheUtils } from '@test-mocks/renderer/CacheService' describe('Cache', () => { beforeEach(() => MockCacheUtils.resetMocks()) @@ -133,7 +142,7 @@ HTTP client with subscriptions and retry configuration. ```typescript import { dataApiService } from '@data/DataApiService' -import { MockDataApiUtils } from 'tests/__mocks__/renderer/DataApiService' +import { MockDataApiUtils } from '@test-mocks/renderer/DataApiService' describe('API', () => { beforeEach(() => MockDataApiUtils.resetMocks()) @@ -175,7 +184,7 @@ React hooks for data operations. ```typescript import { useQuery, useMutation } from '@data/hooks/useDataApi' -import { MockUseDataApiUtils } from 'tests/__mocks__/renderer/useDataApi' +import { MockUseDataApiUtils } from '@test-mocks/renderer/useDataApi' describe('Hooks', () => { beforeEach(() => MockUseDataApiUtils.resetMocks()) @@ -261,7 +270,7 @@ Internal cache and cross-window shared cache. | Shared | `deleteShared` | `(key: K) => boolean` | ```typescript -import { MockMainCacheServiceUtils } from 'tests/__mocks__/main/CacheService' +import { MockMainCacheServiceUtils } from '@test-mocks/main/CacheService' beforeEach(() => MockMainCacheServiceUtils.resetMocks()) @@ -283,7 +292,7 @@ API coordinator managing ApiServer and IpcAdapter. | `getApiServer` | `() => ApiServer` | ```typescript -import { MockMainDataApiServiceUtils } from 'tests/__mocks__/main/DataApiService' +import { MockMainDataApiServiceUtils } from '@test-mocks/main/DataApiService' beforeEach(() => MockMainDataApiServiceUtils.resetMocks()) diff --git a/tsconfig.node.json b/tsconfig.node.json index 5c5c8fb97a..c6255b3df0 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -28,7 +28,8 @@ "@types": ["./src/renderer/src/types/index.ts"], "@shared/*": ["./packages/shared/*"], "@mcp-trace/*": ["./packages/mcp-trace/*"], - "@modelcontextprotocol/sdk/*": ["./node_modules/@modelcontextprotocol/sdk/dist/esm/*"] + "@modelcontextprotocol/sdk/*": ["./node_modules/@modelcontextprotocol/sdk/dist/esm/*"], + "@test-mocks/*": ["./tests/__mocks__/*"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true, diff --git a/tsconfig.web.json b/tsconfig.web.json index 8ca81be30b..7427c512b4 100644 --- a/tsconfig.web.json +++ b/tsconfig.web.json @@ -34,8 +34,8 @@ "@cherrystudio/ai-sdk-provider": ["./packages/ai-sdk-provider/src/index.ts"], "@cherrystudio/ui/icons": ["./packages/ui/src/components/icons/index.ts"], "@cherrystudio/ui": ["./packages/ui/src/index.ts"], - "@cherrystudio/ui/*": ["./packages/ui/src/*"] - + "@cherrystudio/ui/*": ["./packages/ui/src/*"], + "@test-mocks/*": ["./tests/__mocks__/*"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true,