import { renderHook, waitFor } from '@testing-library/react'; import { describe, it, expect, vi, beforeEach } from 'vitest'; import { useNodeStatus } from './useNodeStatus'; import { getNodeStatus } from '../../api'; vi.mock('../../api', () => ({ getNodeStatus: vi.fn() })); describe('useNodeStatus', () => { beforeEach(() => vi.clearAllMocks()); it('fetches node status on mount', async () => { getNodeStatus.mockResolvedValue({ redis_ok: true, workers: [], links: [] }); const { result } = renderHook(() => useNodeStatus(100000)); await waitFor(() => expect(result.current.data).toBeTruthy()); expect(result.current.data.redis_ok).toBe(true); expect(result.current.loading).toBe(false); expect(result.current.error).toBeNull(); }); it('captures fetch error', async () => { getNodeStatus.mockRejectedValue(new Error('boom')); const { result } = renderHook(() => useNodeStatus(100000)); await waitFor(() => expect(result.current.error).toBeTruthy()); expect(result.current.error.message).toBe('boom'); }); });