moex-vibe/apps/frontend/src/entities/stock/model/useStockCandles.test.tsx
Sergey Krylov cfadb2adbe feat: migrate from react-router-dom to @tanstack/react-router (code-first)
- Create code-first route tree in src/app/routing/routeTree.tsx
- Replace ProtectedRoute with beforeLoad auth guards
- Add useSearchParamsCompat for URLSearchParams access
- Update App.tsx, layouts, and all page/widget imports
- Add frontend tooling: biome, prettier, env config
- Update all tests for TanStack Router compatibility
- Remove react-router-dom dependency, @tanstack/router-plugin
- Consolidate biome config at root level
2026-06-23 06:51:48 +03:00

45 lines
1.6 KiB
TypeScript

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 <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
}
}
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([])
})
})