chore: finish frontend ESLint migration #18

Enable every plugin recommended preset and replace Biome with ESLint formatting.

Preserve API contracts and JSX whitespace; verify source, tests, builds and tooling.
This commit is contained in:
2026-09-28 16:36:40 +03:00
committed by ksv741
parent 57630102e4
commit 72d7835227
253 changed files with 10059 additions and 8864 deletions
@@ -1,18 +1,20 @@
import { renderHook, waitFor } from "@testing-library/react";
import { HttpResponse, http } from "msw";
import { http, HttpResponse } from "msw";
import { describe, expect, it, vi } from "vitest";
import { configureAuthClient } from "@/shared/api";
import { createQueryWrapper } from "@/test/query";
import { resource } from "@/test/resource";
import { server } from "@/test/server";
import { useBrokerageEvents } from "./useBrokerageEvents";
describe("useBrokerageEvents", () => {
it("does not fetch events without an account ID", async () => {
configureAuthClient({
accessToken: () => "token",
refresh: async () => true,
clear: vi.fn(),
refresh: () => Promise.resolve(true),
});
const requested = vi.fn(() => HttpResponse.json({ events: [] }));
server.use(
@@ -27,29 +29,31 @@ describe("useBrokerageEvents", () => {
it("loads future cash events through the authenticated query seam", async () => {
configureAuthClient({
accessToken: () => "token",
refresh: async () => true,
clear: vi.fn(),
refresh: () => Promise.resolve(true),
});
server.use(
http.get("*/api/v1/brokerage-accounts/account-1/events", () =>
HttpResponse.json(
resource({
accountId: "account-1",
calculatedAt: "2026-08-14T00:00:00Z",
events: [
{
type: "dividend",
date: "2026-09-01",
dateKind: "registry",
figi: "figi-1",
instrumentUid: null,
ticker: "SBER",
displayName: "Сбер",
logoName: "sber3.png",
projectedAmount: { currency: "RUB", value: "12.34" },
},
],
}),
resource((/* eslint-disable unicorn/no-null -- Fixture preserves the production contract’s explicit null values. */
{
accountId: "account-1",
calculatedAt: "2026-08-14T00:00:00Z",
events: [
{
date: "2026-09-01",
dateKind: "registry",
displayName: "Сбер",
figi: "figi-1",
instrumentUid: null,
logoName: "sber3.png",
projectedAmount: { currency: "RUB", value: "12.34" },
ticker: "SBER",
type: "dividend",
},
],
}
/* eslint-enable unicorn/no-null */)),
),
),
);
@@ -60,17 +64,19 @@ describe("useBrokerageEvents", () => {
await waitFor(() => expect(result.current.isSuccess).toBe(true));
expect(result.current.data?.events).toEqual([
{
type: "dividend",
date: "2026-09-01",
dateKind: "registry",
figi: "figi-1",
instrumentUid: null,
ticker: "SBER",
displayName: "Сбер",
logoName: "sber3.png",
projectedAmount: { currency: "RUB", value: "12.34" },
},
(/* eslint-disable unicorn/no-null -- Fixture preserves the production contract’s explicit null values. */
{
date: "2026-09-01",
dateKind: "registry",
displayName: "Сбер",
figi: "figi-1",
instrumentUid: null,
logoName: "sber3.png",
projectedAmount: { currency: "RUB", value: "12.34" },
ticker: "SBER",
type: "dividend",
}
/* eslint-enable unicorn/no-null */),
]);
});
});
@@ -1,10 +1,10 @@
import { apiQueryClient, type paths, useResourceQuery } from "@/shared/api";
type EventsEndpoint =
paths["/api/v1/brokerage-accounts/{accountId}/events"]["get"];
type BrokerageEvent = NonNullable<
EventsEndpoint["responses"][200]["content"]["application/json"]["data"]
>["events"][number];
type EventsEndpoint
= paths["/api/v1/brokerage-accounts/{accountId}/events"]["get"];
function useBrokerageEvents(
accountId: string | undefined,