mirror of
https://github.com/langgenius/dify.git
synced 2026-05-08 03:36:32 +08:00
fix(web): avoid reload when switching signin locale
This commit is contained in:
parent
16f57b74f5
commit
f7a9279a14
57
web/app/signin/__tests__/_header.spec.tsx
Normal file
57
web/app/signin/__tests__/_header.spec.tsx
Normal file
@ -0,0 +1,57 @@
|
||||
import { useSuspenseQuery } from '@tanstack/react-query'
|
||||
import { fireEvent, render, screen } from '@testing-library/react'
|
||||
import { setLocaleOnClient } from '@/i18n-config'
|
||||
import Header from '../_header'
|
||||
|
||||
vi.mock('@tanstack/react-query', () => ({
|
||||
useSuspenseQuery: vi.fn(),
|
||||
}))
|
||||
|
||||
vi.mock('@/context/i18n', () => ({
|
||||
useLocale: () => 'en-US',
|
||||
}))
|
||||
|
||||
vi.mock('@/i18n-config', () => ({
|
||||
setLocaleOnClient: vi.fn(),
|
||||
}))
|
||||
|
||||
vi.mock('@/next/dynamic', () => ({
|
||||
default: () => () => null,
|
||||
}))
|
||||
|
||||
vi.mock('@/service/system-features', () => ({
|
||||
systemFeaturesQueryOptions: () => ({}),
|
||||
}))
|
||||
|
||||
vi.mock('../_locale-menu', () => ({
|
||||
default: ({ onChange }: { onChange?: (value: string) => void }) => (
|
||||
<button type="button" onClick={() => onChange?.('ja-JP')}>
|
||||
Switch Language
|
||||
</button>
|
||||
),
|
||||
}))
|
||||
|
||||
const mockUseSuspenseQuery = vi.mocked(useSuspenseQuery)
|
||||
const mockSetLocaleOnClient = vi.mocked(setLocaleOnClient)
|
||||
|
||||
describe('Signin Header', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
mockUseSuspenseQuery.mockReturnValue({
|
||||
data: {
|
||||
branding: {
|
||||
enabled: false,
|
||||
login_page_logo: '',
|
||||
},
|
||||
},
|
||||
} as ReturnType<typeof useSuspenseQuery>)
|
||||
})
|
||||
|
||||
it('should switch locale without forcing a full page reload', () => {
|
||||
render(<Header />)
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Switch Language' }))
|
||||
|
||||
expect(mockSetLocaleOnClient).toHaveBeenCalledWith('ja-JP', false)
|
||||
})
|
||||
})
|
||||
@ -39,7 +39,7 @@ const Header = () => {
|
||||
value={locale}
|
||||
items={languages.filter(item => item.supported)}
|
||||
onChange={(value) => {
|
||||
setLocaleOnClient(value as Locale)
|
||||
setLocaleOnClient(value as Locale, false)
|
||||
}}
|
||||
/>
|
||||
<Divider type="vertical" className="mx-0 ml-2 h-4" />
|
||||
|
||||
Loading…
Reference in New Issue
Block a user