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