Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
c44ec7454This file is pinned to the selected release. Download the original to open it in your design tool.
import { act, renderHook } from '@testing-library/react'
import { describe, expect, it } from 'vitest'
import { useLogBuffer } from '@/hooks/use-log-buffer'
describe('useLogBuffer', () => {
it('retains only the newest entries up to the configured capacity', () => {
const { result } = renderHook(() => useLogBuffer(2))
act(() => {
result.current.append('first')
result.current.append('second')
result.current.append('third')
})
expect(result.current.entries.map((entry) => entry.message)).toEqual(['second', 'third'])
})
it.each([0, -1, Number.NaN, Number.POSITIVE_INFINITY])(
'keeps no entries when the capacity is not positive and finite (%s)',
(capacity) => {
const { result } = renderHook(() => useLogBuffer(capacity))
act(() => result.current.append('ignored'))
expect(result.current.entries).toEqual([])
}
)
it('immediately trims existing entries when the capacity changes', () => {
const { result, rerender } = renderHook(({ capacity }) => useLogBuffer(capacity), {
initialProps: { capacity: 3 },
})
act(() => {
result.current.append('first')
result.current.append('second')
result.current.append('third')
})
rerender({ capacity: 1 })
expect(result.current.entries.map((entry) => entry.message)).toEqual(['third'])
rerender({ capacity: 0 })
expect(result.current.entries).toEqual([])
})
})