mirror of
https://github.com/lobehub/lobehub
synced 2026-04-21 09:37:28 +00:00
* ✨ feat(resource): add select all hint and improve resource explorer selection Made-with: Cursor * ♻️ refactor(resource): flatten store actions and improve type imports Made-with: Cursor * ♻️ refactor resource explorer list view * refactor: engine Signed-off-by: Innei <tukon479@gmail.com> * ✨ feat: checkpoint current workspace updates * ♻️ refine resource explorer fetch ownership * 🐛 fix: resolve resource manager ci regressions * 🐛 fix(lambda): delete page-backed knowledge items by document id * 🐛 fix(lambda): include knowledge-base files in remove-all * 🐛 fix(resource): preserve cross-page select-all exclusions * 🐛 fix(resource): retain off-screen optimistic resources * 🐛 fix(resource): hide moved root items from current query * 🐛 fix(resource): reset explorer selection on query change * 🐛 fix(resource): fix select-all batchChunking and optimistic replace visibility - batchChunking: pass through server-resolved IDs not in local resourceMap when selectAllState is 'all', letting server filter unsupported types - replaceLocalResource: keep replacement visible if the optimistic item was already in the list, avoiding slug-vs-UUID mismatch in visibility check * 🐛 fix(resource): reset selectAllState after batch operations and preserve off-screen optimistic items - Reset selectAllState to 'none' after delete, removeFromKnowledgeBase, and batchChunking to prevent stale 'all' state causing unintended re-selection of remaining items - Preserve off-screen optimistic resources in clearCurrentQueryResources so background uploads from other folders survive delete-all-by-query * 🐛 fix: satisfy import-x/first in resource action test Made-with: Cursor * 🎨 lint: sort imports in ResourceExplorer Made-with: Cursor * 🐛 fix: widen searchQuery type in useResetSelectionOnQueryChange test Made-with: Cursor --------- Signed-off-by: Innei <tukon479@gmail.com>
76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
import '@testing-library/jest-dom';
|
|
// mock indexedDB to test with dexie
|
|
// refs: https://github.com/dumbmatter/fakeIndexedDB#dexie-and-other-indexeddb-api-wrappers
|
|
import 'fake-indexeddb/auto';
|
|
|
|
import { theme } from 'antd';
|
|
import i18n from 'i18next';
|
|
import { enableMapSet, enablePatches } from 'immer';
|
|
import React from 'react';
|
|
import { vi } from 'vitest';
|
|
|
|
import chat from '@/locales/default/chat';
|
|
import common from '@/locales/default/common';
|
|
import discover from '@/locales/default/discover';
|
|
import home from '@/locales/default/home';
|
|
import oauth from '@/locales/default/oauth';
|
|
|
|
// Enable Immer MapSet plugin so store code using Map/Set in produce() works in tests
|
|
enablePatches();
|
|
enableMapSet();
|
|
|
|
// 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(),
|
|
},
|
|
}),
|
|
}));
|
|
|
|
// Global mock for @/auth to avoid better-auth validator module issue in tests
|
|
// The validator package has ESM resolution issues in Vitest environment
|
|
vi.mock('@/auth', () => ({
|
|
auth: {
|
|
api: {
|
|
getSession: vi.fn().mockResolvedValue(null),
|
|
},
|
|
},
|
|
}));
|
|
|
|
// node runtime
|
|
if (typeof globalThis.window === 'undefined') {
|
|
// test with polyfill crypto
|
|
const { Crypto } = await import('@peculiar/webcrypto');
|
|
|
|
Object.defineProperty(globalThis, 'crypto', {
|
|
value: new Crypto(),
|
|
writable: true,
|
|
});
|
|
}
|
|
|
|
// remove antd hash on test
|
|
theme.defaultConfig.hashed = false;
|
|
|
|
// init i18n for non-React modules (stores/utils) using i18next.t(...)
|
|
// Use in-memory resources to avoid interfering with Vitest module mocking.
|
|
await i18n.init({
|
|
defaultNS: 'common',
|
|
fallbackLng: 'zh-CN',
|
|
interpolation: { escapeValue: false },
|
|
lng: 'zh-CN',
|
|
ns: ['common', 'chat', 'discover', 'home', 'oauth'],
|
|
resources: {
|
|
'zh-CN': {
|
|
chat,
|
|
common,
|
|
discover,
|
|
home,
|
|
oauth,
|
|
},
|
|
},
|
|
});
|
|
|
|
// 将 React 设置为全局变量,这样就不需要在每个测试文件中导入它了
|
|
(globalThis as any).React = React;
|