Add stock search and detail pages with charts, dividends and shared event rows. Use verified ticker links for portfolio names and logos, numeric dates and refreshed account cards. Update the generated API contract.
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import { renderHook, waitFor } from "@testing-library/react";
|
|
import { HttpResponse, http } from "msw";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import { createQueryWrapper } from "@/test/query";
|
|
import { server } from "@/test/server";
|
|
import {
|
|
useAuthenticatedQueries,
|
|
useAuthenticatedQuery,
|
|
} from "./authenticated-query";
|
|
import { apiQueryClient, configureAuthClient } from "./client";
|
|
|
|
describe("useAuthenticatedQuery", () => {
|
|
it.each(["single", "multiple"])(
|
|
"keeps %s protected queries idle without a session and loads after session configuration",
|
|
async (mode) => {
|
|
const requests = vi.fn();
|
|
server.use(
|
|
http.get("*/api/v1/brokerage-accounts", () => {
|
|
requests();
|
|
return HttpResponse.json([
|
|
{
|
|
id: "account-1",
|
|
name: "Основной",
|
|
type: "BROKERAGE",
|
|
openedOn: "2024-08-13",
|
|
},
|
|
]);
|
|
}),
|
|
);
|
|
|
|
const useSingleQuery = () =>
|
|
useAuthenticatedQuery(
|
|
apiQueryClient.queryOptions("get", "/api/v1/brokerage-accounts"),
|
|
);
|
|
const useMultipleQueries = () =>
|
|
useAuthenticatedQueries([
|
|
apiQueryClient.queryOptions("get", "/api/v1/brokerage-accounts"),
|
|
])[0];
|
|
const { result } = renderHook(
|
|
mode === "single" ? useSingleQuery : useMultipleQueries,
|
|
{ wrapper: createQueryWrapper().wrapper },
|
|
);
|
|
|
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
expect(requests).not.toHaveBeenCalled();
|
|
expect(result.current.fetchStatus).toBe("idle");
|
|
|
|
configureAuthClient({
|
|
accessToken: () => "token",
|
|
refresh: async () => true,
|
|
clear: vi.fn(),
|
|
});
|
|
|
|
await waitFor(() => expect(result.current.isSuccess).toBe(true));
|
|
expect(requests).toHaveBeenCalledOnce();
|
|
expect(result.current.data).toEqual([
|
|
{
|
|
id: "account-1",
|
|
name: "Основной",
|
|
type: "BROKERAGE",
|
|
openedOn: "2024-08-13",
|
|
},
|
|
]);
|
|
},
|
|
);
|
|
});
|