35 lines
958 B
TypeScript
35 lines
958 B
TypeScript
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
import { renderHook, act } from '@testing-library/react'
|
|
import { useCountdown } from '../hooks/useCountdown'
|
|
|
|
vi.mock('../lib/api/listings', () => ({
|
|
fetchCountdownSync: vi.fn().mockResolvedValue([
|
|
{ id: 1, time_left_mins: 30 },
|
|
{ id: 2, time_left_mins: 5 },
|
|
]),
|
|
}))
|
|
|
|
describe('useCountdown', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
})
|
|
|
|
it('returns null for unknown id before sync', () => {
|
|
const { result } = renderHook(() => useCountdown())
|
|
expect(result.current(999)).toBeNull()
|
|
})
|
|
|
|
it('returns mins for known id after sync', async () => {
|
|
const { result } = renderHook(() => useCountdown())
|
|
|
|
await act(async () => {
|
|
// Wait for the initial fetch to complete
|
|
await new Promise(resolve => setTimeout(resolve, 50))
|
|
})
|
|
|
|
const mins = result.current(1)
|
|
expect(mins).not.toBeNull()
|
|
expect(mins).toBeCloseTo(30, 0)
|
|
})
|
|
})
|