import { describe, it, expect } from 'vitest'; import { renderHook, waitFor } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { http, HttpResponse } from 'msw'; import { server } from '../../../test/server'; import { useBondCandles } from './useBondCandles'; import { type ReactNode } from 'react'; const API = '/api/v1'; function createWrapper() { const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }); return function Wrapper({ children }: { children: ReactNode }) { return {children}; }; } describe('useBondCandles', () => { it('returns candle data', async () => { const { result } = renderHook( () => useBondCandles('SU26238RMFS5', '24h', '2024-01-01', '2024-01-31'), { wrapper: createWrapper() }, ); await waitFor(() => expect(result.current.isSuccess).toBe(true)); expect(result.current.data).toHaveLength(2); }); it('returns empty array when no candles', async () => { server.use( http.get(`${API}/securities/bonds/:secid/candles`, () => { return HttpResponse.json({ data: { data: [], meta: { fromCache: false, cachedAt: null } }, }); }), ); const { result } = renderHook( () => useBondCandles('SU26238RMFS5', '24h', '2024-01-01', '2024-01-31'), { wrapper: createWrapper() }, ); await waitFor(() => expect(result.current.isSuccess).toBe(true)); expect(result.current.data).toEqual([]); }); });