import { act, render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { useUIStore } from '@/stores'; import { SettingsPage } from '../SettingsPage'; vi.mock('antd', () => ({ theme: { useToken: () => ({ token: { colorBgContainer: '#ffffff', colorBgElevated: '#f8f8f8', }, }), }, })); vi.mock('@/components/settings', () => ({ SettingsSidebar: () => , ProviderSettings: () =>
providers-content
, GeneralSettings: () =>
general-content
, DisplaySettings: () =>
display-content
, ProxySettings: () =>
proxy-content
, ShortcutSettings: () =>
shortcuts-content
, DataManager: () =>
data-content
, AboutPage: () =>
about-content
, SearchProviderSettings: () =>
search-providers-content
, McpServerSettings: () =>
mcp-servers-content
, BackupCenter: () =>
backup-content
, StorageSpaceManager: () =>
storage-content
, })); vi.mock('@/components/settings/DefaultModelSettings', () => ({ DefaultModelSettings: () =>
default-model-content
, })); vi.mock('@/components/settings/ConversationSettings', () => ({ ConversationSettings: () =>
conversation-settings-content
, })); describe('SettingsPage', () => { beforeEach(() => { act(() => { useUIStore.setState({ activePage: 'settings', previousPage: 'chat', settingsSection: 'general', selectedProviderId: null, }); }); }); it('resets the content scroll position when switching settings sections', () => { render(); const contentScroller = screen.getByText('general-content').parentElement as HTMLElement; contentScroller.scrollTop = 480; act(() => { useUIStore.getState().setSettingsSection('display'); }); expect(screen.getByText('display-content')).toBeInTheDocument(); expect(contentScroller.scrollTop).toBe(0); }); });