import { MantineProvider } from "@mantine/core"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { renderHook, waitFor } from "@testing-library/react"; import { HttpResponse, http } from "msw"; import type { FC, PropsWithChildren } from "react"; import { afterEach, describe, expect, it, vi } from "vitest"; import { configureAuthClient } from "@/shared/api"; import { server } from "@/test/server"; import { useBrokerageAccounts } from "./useBrokerageAccounts"; function createWrapper() { const client = new QueryClient(); const TestWrapper: FC = (props) => { const { children } = props; return ( {children} ); }; return TestWrapper; } describe("useBrokerageAccounts", () => { afterEach(() => configureAuthClient(null)); it("loads accounts through the authenticated query seam", async () => { configureAuthClient({ accessToken: () => "token", refresh: async () => true, clear: vi.fn(), }); server.use( http.get("*/api/v1/brokerage-accounts", () => HttpResponse.json([ { id: "account-1", name: "Основной", type: "BROKERAGE", openedOn: "2024-08-13", }, ]), ), ); const { result } = renderHook(() => useBrokerageAccounts(), { wrapper: createWrapper(), }); await waitFor(() => expect(result.current.isSuccess).toBe(true)); expect(result.current.data).toEqual([ { id: "account-1", name: "Основной", type: "BROKERAGE", openedOn: "2024-08-13", }, ]); }); });