mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
* fix(web): trust live hub connectivity over navigator status * fix(web): align offline and reconnecting banner precedence * test(web): provide i18n context to banner tests
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { render, screen } from '@testing-library/react'
|
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
import { I18nProvider } from '@/lib/i18n-context'
|
|
import { OfflineBanner } from './OfflineBanner'
|
|
|
|
const useOnlineStatusMock = vi.fn(() => true)
|
|
|
|
vi.mock('@/hooks/useOnlineStatus', () => ({
|
|
useOnlineStatus: () => useOnlineStatusMock()
|
|
}))
|
|
|
|
describe('OfflineBanner', () => {
|
|
beforeEach(() => {
|
|
useOnlineStatusMock.mockReturnValue(true)
|
|
})
|
|
|
|
it('shows when the browser and hub are offline', () => {
|
|
useOnlineStatusMock.mockReturnValue(false)
|
|
|
|
render(<I18nProvider><OfflineBanner isHubConnected={false} isReconnecting={false} /></I18nProvider>)
|
|
|
|
expect(screen.getByText(/currently offline/i)).toBeInTheDocument()
|
|
})
|
|
|
|
it('ignores navigator.onLine when the hub is connected', () => {
|
|
useOnlineStatusMock.mockReturnValue(false)
|
|
|
|
render(<I18nProvider><OfflineBanner isHubConnected={true} isReconnecting={false} /></I18nProvider>)
|
|
|
|
expect(screen.queryByText(/currently offline/i)).toBeNull()
|
|
})
|
|
|
|
it('defers to the reconnecting banner during an SSE outage', () => {
|
|
useOnlineStatusMock.mockReturnValue(false)
|
|
|
|
render(<I18nProvider><OfflineBanner isHubConnected={false} isReconnecting={true} /></I18nProvider>)
|
|
|
|
expect(screen.queryByText(/currently offline/i)).toBeNull()
|
|
})
|
|
})
|