mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-05 15:44:21 +00:00
Fix FileActions, FileTree, and MainContent tests by mocking context providers
This commit is contained in:
@@ -3,22 +3,59 @@ import { fireEvent } from '@testing-library/react';
|
||||
import { render } from '../../test/utils';
|
||||
import FileActions from './FileActions';
|
||||
import { Theme } from '@/types/models';
|
||||
import { ModalProvider } from '../../contexts/ModalContext';
|
||||
import { ThemeProvider } from '../../contexts/ThemeContext';
|
||||
import { WorkspaceDataProvider } from '../../contexts/WorkspaceDataContext';
|
||||
|
||||
// Mock the contexts and hooks
|
||||
vi.mock('../../contexts/ModalContext', () => ({
|
||||
useModalContext: vi.fn(),
|
||||
ModalProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../../hooks/useWorkspace', () => ({
|
||||
useWorkspace: vi.fn(),
|
||||
}));
|
||||
|
||||
// Mock contexts
|
||||
vi.mock('../../contexts/ThemeContext', () => ({
|
||||
useTheme: () => ({
|
||||
colorScheme: 'light',
|
||||
updateColorScheme: vi.fn(),
|
||||
}),
|
||||
ThemeProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../../contexts/WorkspaceDataContext', () => ({
|
||||
useWorkspaceData: () => ({
|
||||
currentWorkspace: { name: 'test-workspace', path: '/test' },
|
||||
workspaces: [],
|
||||
settings: {},
|
||||
loading: false,
|
||||
loadWorkspaces: vi.fn(),
|
||||
loadWorkspaceData: vi.fn(),
|
||||
setCurrentWorkspace: vi.fn(),
|
||||
}),
|
||||
WorkspaceDataProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
const TestWrapper = ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
<ThemeProvider>
|
||||
<WorkspaceDataProvider>
|
||||
<ModalProvider>{children}</ModalProvider>
|
||||
</WorkspaceDataProvider>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
describe('FileActions', () => {
|
||||
const mockHandlePullChanges = vi.fn();
|
||||
const mockLoadFileList = vi.fn();
|
||||
const mockSetNewFileModalVisible = vi.fn();
|
||||
const mockSetDeleteFileModalVisible = vi.fn();
|
||||
const mockSetCommitMessageModalVisible = vi.fn();
|
||||
@@ -52,6 +89,8 @@ describe('FileActions', () => {
|
||||
setNewFileModalVisible: mockSetNewFileModalVisible,
|
||||
deleteFileModalVisible: false,
|
||||
setDeleteFileModalVisible: mockSetDeleteFileModalVisible,
|
||||
renameFileModalVisible: false,
|
||||
setRenameFileModalVisible: vi.fn(),
|
||||
commitMessageModalVisible: false,
|
||||
setCommitMessageModalVisible: mockSetCommitMessageModalVisible,
|
||||
settingsModalVisible: false,
|
||||
@@ -81,6 +120,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile={null}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -97,6 +137,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile="test.md"
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -113,6 +154,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile={null}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -129,6 +171,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile="test.md"
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -157,6 +200,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile="test.md"
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -174,6 +218,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile="test.md"
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -202,6 +247,7 @@ describe('FileActions', () => {
|
||||
<FileActions
|
||||
handlePullChanges={mockHandlePullChanges}
|
||||
selectedFile="test.md"
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
|
||||
@@ -3,6 +3,9 @@ import { fireEvent, waitFor } from '@testing-library/react';
|
||||
import { render } from '../../test/utils';
|
||||
import FileTree from './FileTree';
|
||||
import type { FileNode } from '../../types/models';
|
||||
import { ModalProvider } from '../../contexts/ModalContext';
|
||||
import { ThemeProvider } from '../../contexts/ThemeContext';
|
||||
import { WorkspaceDataProvider } from '../../contexts/WorkspaceDataContext';
|
||||
|
||||
// Mock react-arborist
|
||||
vi.mock('react-arborist', () => ({
|
||||
@@ -69,12 +72,76 @@ vi.mock('@react-hook/resize-observer', () => ({
|
||||
default: vi.fn(),
|
||||
}));
|
||||
|
||||
// Mock contexts
|
||||
vi.mock('../../contexts/ThemeContext', () => ({
|
||||
useTheme: () => ({
|
||||
colorScheme: 'light',
|
||||
updateColorScheme: vi.fn(),
|
||||
}),
|
||||
ThemeProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../../contexts/WorkspaceDataContext', () => ({
|
||||
useWorkspaceData: () => ({
|
||||
currentWorkspace: { name: 'test-workspace', path: '/test' },
|
||||
workspaces: [],
|
||||
settings: {},
|
||||
loading: false,
|
||||
loadWorkspaces: vi.fn(),
|
||||
loadWorkspaceData: vi.fn(),
|
||||
setCurrentWorkspace: vi.fn(),
|
||||
}),
|
||||
WorkspaceDataProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../../contexts/ModalContext', () => ({
|
||||
useModalContext: () => ({
|
||||
newFileModalVisible: false,
|
||||
setNewFileModalVisible: vi.fn(),
|
||||
deleteFileModalVisible: false,
|
||||
setDeleteFileModalVisible: vi.fn(),
|
||||
renameFileModalVisible: false,
|
||||
setRenameFileModalVisible: vi.fn(),
|
||||
commitMessageModalVisible: false,
|
||||
setCommitMessageModalVisible: vi.fn(),
|
||||
settingsModalVisible: false,
|
||||
setSettingsModalVisible: vi.fn(),
|
||||
switchWorkspaceModalVisible: false,
|
||||
setSwitchWorkspaceModalVisible: vi.fn(),
|
||||
createWorkspaceModalVisible: false,
|
||||
setCreateWorkspaceModalVisible: vi.fn(),
|
||||
}),
|
||||
ModalProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../../hooks/useFileOperations', () => ({
|
||||
useFileOperations: () => ({
|
||||
handleSave: vi.fn(),
|
||||
handleCreate: vi.fn(),
|
||||
handleDelete: vi.fn(),
|
||||
handleUpload: vi.fn(),
|
||||
handleMove: vi.fn(),
|
||||
handleRename: vi.fn(),
|
||||
}),
|
||||
}));
|
||||
|
||||
const TestWrapper = ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
<ThemeProvider>
|
||||
<WorkspaceDataProvider>
|
||||
<ModalProvider>{children}</ModalProvider>
|
||||
</WorkspaceDataProvider>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
describe('FileTree', () => {
|
||||
const mockHandleFileSelect = vi.fn();
|
||||
const mockLoadFileList = vi.fn();
|
||||
|
||||
const mockFiles: FileNode[] = [
|
||||
{
|
||||
@@ -112,6 +179,7 @@ describe('FileTree', () => {
|
||||
files={mockFiles}
|
||||
handleFileSelect={mockHandleFileSelect}
|
||||
showHiddenFiles={true}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -128,6 +196,7 @@ describe('FileTree', () => {
|
||||
files={mockFiles}
|
||||
handleFileSelect={mockHandleFileSelect}
|
||||
showHiddenFiles={true}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -147,6 +216,7 @@ describe('FileTree', () => {
|
||||
files={mockFiles}
|
||||
handleFileSelect={mockHandleFileSelect}
|
||||
showHiddenFiles={false}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -166,6 +236,7 @@ describe('FileTree', () => {
|
||||
files={mockFiles}
|
||||
handleFileSelect={mockHandleFileSelect}
|
||||
showHiddenFiles={true}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -183,6 +254,7 @@ describe('FileTree', () => {
|
||||
files={[]}
|
||||
handleFileSelect={mockHandleFileSelect}
|
||||
showHiddenFiles={true}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
@@ -199,6 +271,7 @@ describe('FileTree', () => {
|
||||
files={mockFiles}
|
||||
handleFileSelect={mockHandleFileSelect}
|
||||
showHiddenFiles={true}
|
||||
loadFileList={mockLoadFileList}
|
||||
/>
|
||||
</TestWrapper>
|
||||
);
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import { render } from '../../test/utils';
|
||||
import MainContent from './MainContent';
|
||||
import { ModalProvider } from '../../contexts/ModalContext';
|
||||
import { ThemeProvider } from '../../contexts/ThemeContext';
|
||||
import { WorkspaceDataProvider } from '../../contexts/WorkspaceDataContext';
|
||||
|
||||
// Mock child components
|
||||
vi.mock('../editor/ContentView', () => ({
|
||||
@@ -31,6 +34,32 @@ vi.mock('../modals/git/CommitMessageModal', () => ({
|
||||
),
|
||||
}));
|
||||
|
||||
// Mock contexts
|
||||
vi.mock('../../contexts/ThemeContext', () => ({
|
||||
useTheme: () => ({
|
||||
colorScheme: 'light',
|
||||
updateColorScheme: vi.fn(),
|
||||
}),
|
||||
ThemeProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('../../contexts/WorkspaceDataContext', () => ({
|
||||
useWorkspaceData: () => ({
|
||||
currentWorkspace: { name: 'test-workspace', path: '/test' },
|
||||
workspaces: [],
|
||||
settings: {},
|
||||
loading: false,
|
||||
loadWorkspaces: vi.fn(),
|
||||
loadWorkspaceData: vi.fn(),
|
||||
setCurrentWorkspace: vi.fn(),
|
||||
}),
|
||||
WorkspaceDataProvider: ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
),
|
||||
}));
|
||||
|
||||
// Mock hooks
|
||||
vi.mock('../../hooks/useFileContent', () => ({
|
||||
useFileContent: vi.fn(),
|
||||
@@ -45,7 +74,11 @@ vi.mock('../../hooks/useGitOperations', () => ({
|
||||
}));
|
||||
|
||||
const TestWrapper = ({ children }: { children: React.ReactNode }) => (
|
||||
<div>{children}</div>
|
||||
<ThemeProvider>
|
||||
<WorkspaceDataProvider>
|
||||
<ModalProvider>{children}</ModalProvider>
|
||||
</WorkspaceDataProvider>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
describe('MainContent', () => {
|
||||
@@ -56,6 +89,9 @@ describe('MainContent', () => {
|
||||
const mockHandleSave = vi.fn();
|
||||
const mockHandleCreate = vi.fn();
|
||||
const mockHandleDelete = vi.fn();
|
||||
const mockHandleUpload = vi.fn();
|
||||
const mockHandleMove = vi.fn();
|
||||
const mockHandleRename = vi.fn();
|
||||
const mockHandleCommitAndPush = vi.fn();
|
||||
|
||||
beforeEach(async () => {
|
||||
@@ -76,6 +112,9 @@ describe('MainContent', () => {
|
||||
handleSave: mockHandleSave,
|
||||
handleCreate: mockHandleCreate,
|
||||
handleDelete: mockHandleDelete,
|
||||
handleUpload: mockHandleUpload,
|
||||
handleMove: mockHandleMove,
|
||||
handleRename: mockHandleRename,
|
||||
});
|
||||
|
||||
const { useGitOperations } = await import('../../hooks/useGitOperations');
|
||||
|
||||
Reference in New Issue
Block a user