mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-27 13:29:15 +07:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
/* eslint-disable import/newline-after-import,import/first */
|
|
import '@testing-library/jest-dom';
|
|
import { theme } from 'antd';
|
|
// mock indexedDB to test with dexie
|
|
// refs: https://github.com/dumbmatter/fakeIndexedDB#dexie-and-other-indexeddb-api-wrappers
|
|
import 'fake-indexeddb/auto';
|
|
import React from 'react';
|
|
import { vi } from 'vitest';
|
|
|
|
// Global mock for @lobehub/analytics/react to avoid AnalyticsProvider dependency
|
|
// This prevents tests from failing when components use useAnalytics hook
|
|
vi.mock('@lobehub/analytics/react', () => ({
|
|
useAnalytics: () => ({
|
|
analytics: {
|
|
track: vi.fn(),
|
|
},
|
|
}),
|
|
}));
|
|
|
|
// only inject in the dom environment
|
|
if (
|
|
// not node runtime
|
|
typeof window !== 'undefined' &&
|
|
// not edge runtime
|
|
typeof (globalThis as any).EdgeRuntime !== 'string'
|
|
) {
|
|
// test with canvas
|
|
await import('vitest-canvas-mock');
|
|
}
|
|
|
|
// node runtime
|
|
if (typeof window === 'undefined') {
|
|
// test with polyfill crypto
|
|
const { Crypto } = await import('@peculiar/webcrypto');
|
|
|
|
Object.defineProperty(global, 'crypto', {
|
|
value: new Crypto(),
|
|
writable: true,
|
|
});
|
|
}
|
|
|
|
// remove antd hash on test
|
|
theme.defaultConfig.hashed = false;
|
|
|
|
// 将 React 设置为全局变量,这样就不需要在每个测试文件中导入它了
|
|
(global as any).React = React;
|