27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { renderHook, waitFor } from '@testing-library/react';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { useBond } from './useBond';
|
|
import { type ReactNode } from 'react';
|
|
|
|
function createWrapper() {
|
|
const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } });
|
|
return function Wrapper({ children }: { children: ReactNode }) {
|
|
return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>;
|
|
};
|
|
}
|
|
|
|
describe('useBond', () => {
|
|
it('returns bond data', async () => {
|
|
const { result } = renderHook(() => useBond('SU26238RMFS5'), { wrapper: createWrapper() });
|
|
await waitFor(() => expect(result.current.isSuccess).toBe(true));
|
|
expect(result.current.data?.shortName).toBe('ОФЗ 26238');
|
|
expect(result.current.data?.marketData.price).toBe(98.5);
|
|
});
|
|
|
|
it('returns error on 404', async () => {
|
|
const { result } = renderHook(() => useBond('NOTFOUND'), { wrapper: createWrapper() });
|
|
await waitFor(() => expect(result.current.isError).toBe(true));
|
|
});
|
|
});
|