feat: add brocker account list

This commit is contained in:
2026-08-13 20:57:01 +03:00
parent 32e21de17d
commit 6e89c1a8f7
11 changed files with 330 additions and 8 deletions
+51 -3
View File
@@ -2,7 +2,19 @@ import { MantineProvider } from "@mantine/core";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { cleanup, render, screen, waitFor } from "@testing-library/react";
import { MemoryRouter } from "react-router";
import { afterEach, describe, expect, it } from "vitest";
import { afterEach, describe, expect, it, vi } from "vitest";
vi.mock("../../shared/api", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../shared/api")>();
return {
...actual,
apiClient: {
...actual.apiClient,
POST: vi.fn(async () => ({ data: undefined })),
},
};
});
import { AuthProvider } from "../../features/auth";
import {
AccountsPageEmpty,
@@ -46,6 +58,37 @@ describe("AppRoutes", () => {
);
});
it("renders the T-Bank settings action for a missing connection", () => {
render(
<MantineProvider theme={theme}>
<MemoryRouter>
<AccountsPageError code="TBANK_NOT_CONNECTED" />
</MemoryRouter>
</MantineProvider>,
);
expect(
screen.getByRole("link", { name: "Открыть настройки T-Bank" }),
).toHaveAttribute("href", "/settings");
});
it("renders retry and settings actions when T-Bank is unavailable", () => {
const retry = vi.fn();
render(
<MantineProvider theme={theme}>
<MemoryRouter>
<AccountsPageError code="TBANK_UNAVAILABLE" retry={retry} />
</MemoryRouter>
</MantineProvider>,
);
screen.getByRole("button", { name: "Повторить" }).click();
expect(retry).toHaveBeenCalledOnce();
expect(
screen.getByRole("link", { name: "Открыть настройки T-Bank" }),
).toHaveAttribute("href", "/settings");
});
it("redirects anonymous users from accounts", async () => {
renderRoutes("/accounts");
@@ -71,7 +114,10 @@ describe("AppRoutes", () => {
expect(screen.getByRole(role)).toBeInTheDocument();
} else {
expect(
screen.getByRole("heading", { level: 2, name: "Пока ничего нет" }),
screen.getByRole("heading", {
level: 2,
name: "Нет инвестиционных счетов",
}),
).toBeInTheDocument();
}
@@ -81,6 +127,8 @@ describe("AppRoutes", () => {
expect(screen.queryAllByRole("alert")).toHaveLength(
role === "alert" ? 1 : 0,
);
expect(screen.queryAllByText("Пока ничего нет")).toHaveLength(role ? 0 : 1);
expect(screen.queryAllByText("Нет инвестиционных счетов")).toHaveLength(
role ? 0 : 1,
);
});
});