feat(tests): add comprehensive tests for ProxyHosts and Uptime components
- Introduced isolated coverage tests for ProxyHosts with various scenarios including rendering, bulk apply, and link behavior. - Enhanced existing ProxyHosts coverage tests to include additional assertions and error handling. - Added tests for Uptime component to verify rendering and monitoring toggling functionality. - Created utility functions for setting labels and help texts related to proxy host settings. - Implemented bulk settings application logic with progress tracking and error handling. - Added toast utility tests to ensure callback functionality and ID incrementing. - Improved type safety in test files by using appropriate TypeScript types.
This commit is contained in:
@@ -46,7 +46,8 @@ const hostB: ProxyHost = {
|
||||
|
||||
describe('compareHosts', () => {
|
||||
it('returns 0 for unknown sort column (default case)', () => {
|
||||
const res = compareHosts(hostA, hostB, 'unknown' as any, 'asc')
|
||||
const compareAny = compareHosts as unknown as (a: ProxyHost, b: ProxyHost, sortColumn: string, sortDirection: 'asc' | 'desc') => number
|
||||
const res = compareAny(hostA, hostB, 'unknown', 'asc')
|
||||
expect(res).toBe(0)
|
||||
})
|
||||
|
||||
|
||||
40
frontend/src/utils/__tests__/toast.test.ts
Normal file
40
frontend/src/utils/__tests__/toast.test.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { toast, toastCallbacks } from '../toast'
|
||||
|
||||
describe('toast util', () => {
|
||||
beforeEach(() => {
|
||||
// Ensure callbacks set is empty before each test
|
||||
toastCallbacks.clear()
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
toastCallbacks.clear()
|
||||
})
|
||||
|
||||
it('calls registered callbacks for each toast type', () => {
|
||||
const mock = vi.fn()
|
||||
toastCallbacks.add(mock)
|
||||
|
||||
toast.success('ok')
|
||||
toast.error('bad')
|
||||
toast.info('info')
|
||||
toast.warning('warn')
|
||||
|
||||
expect(mock).toHaveBeenCalledTimes(4)
|
||||
expect(mock.mock.calls[0][0]).toMatchObject({ message: 'ok', type: 'success' })
|
||||
expect(mock.mock.calls[1][0]).toMatchObject({ message: 'bad', type: 'error' })
|
||||
expect(mock.mock.calls[2][0]).toMatchObject({ message: 'info', type: 'info' })
|
||||
expect(mock.mock.calls[3][0]).toMatchObject({ message: 'warn', type: 'warning' })
|
||||
})
|
||||
|
||||
it('provides incrementing ids', () => {
|
||||
const mock = vi.fn()
|
||||
toastCallbacks.add(mock)
|
||||
// send multiple messages
|
||||
toast.success('one')
|
||||
toast.success('two')
|
||||
const firstId = mock.mock.calls[0][0].id
|
||||
const secondId = mock.mock.calls[1][0].id
|
||||
expect(secondId).toBeGreaterThan(firstId)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user