import { renderHook } from '@testing-library/react-hooks'import { describe, it, expect, beforeEach, vi } from 'vitest'import { useDateLocale } from './useDateLocale'vi.mock('react-admin', () => ({useLocale: vi.fn(),}))describe('useDateLocale', () => {beforeEach(() => {vi.clearAllMocks()localStorage.removeItem('dateFormat')})const renderWith = async (locale, browserLocales) => {const { useLocale } = await import('react-admin')vi.mocked(useLocale).mockReturnValue(locale)vi.spyOn(navigator, 'languages', 'get').mockReturnValue(browserLocales)return renderHook(() => useDateLocale()).result}it('adds the region from the browser when the language has none', async () => {const result = await renderWith('en', ['en-GB', 'fr-FR'])expect(result.current).toEqual('en-GB')})it('falls back to the language when no browser entry matches', async () => {const result = await renderWith('de', ['en-US', 'fr-FR'])expect(result.current).toEqual('de')})it('keeps a language that already carries a region or script', async () => {expect((await renderWith('pt-br', ['pt-PT'])).current).toEqual('pt-br')expect((await renderWith('zh-Hans', ['zh-TW'])).current).toEqual('zh-Hans')})it('matches the browser language case-insensitively', async () => {const result = await renderWith('pt', ['PT-PT'])expect(result.current).toEqual('PT-PT')})it('returns undefined when there is no language', async () => {const result = await renderWith(undefined, ['en-GB'])expect(result.current).toBeUndefined()})it('returns undefined to use the browser locale when set to browser', async () => {localStorage.setItem('dateFormat', 'browser')const result = await renderWith('en', ['fr-FR'])expect(result.current).toBeUndefined()})})