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,14 +1,18 @@
import "@mantine/core/styles.css";
import "@wealthledger/ui/styles.css";
import "@/shared/i18n";
import { MantineProvider } from "@mantine/core";
// eslint-disable-next-line testing-library/no-manual-cleanup -- Vitest globals are disabled, so RTL cannot register its automatic afterEach cleanup.
import { cleanup, render, screen } from "@testing-library/react";
import { cssVariablesResolver, theme } from "@wealthledger/ui/theme";
import { afterEach, expect, it } from "vitest";
import type {
AccountPagePosition,
AccountPagePositionSection,
} from "./AccountPage.vm";
import { PositionSection } from "./components/PositionSection.view";
afterEach(cleanup);
@@ -22,39 +26,42 @@ it("keeps expanded positions vertical while other positions adapt to the viewpor
const width = window.innerWidth;
expect([375, 1280]).toContain(width);
for (const kind of kinds) {
const positions: AccountPagePosition[] = [1, 2, 3].map((index) => ({
figi: null,
displayName: `Инструмент ${index}`,
type: kind === "stocks" ? "STOCK" : kind === "bonds" ? "BOND" : "FUND",
quantity: "10",
currentValue: { currency: "RUB", value: "1000" },
averagePurchasePrice: null,
absoluteReturn: null,
isin: null,
ticker: null,
logoName: null,
shareText: null,
returnText: null,
logoSrc: null,
}));
const otherType = kind === "bonds" ? "BOND" : "FUND";
const positions: AccountPagePosition[] = [1, 2, 3].map(index => ((/* eslint-disable unicorn/no-null -- Fixture preserves the production contract’s explicit null values. */
{
absoluteReturn: null,
averagePurchasePrice: null,
currentValue: { currency: "RUB", value: "1000" },
displayName: `Инструмент ${index}`,
figi: null,
isin: null,
logoName: null,
logoSrc: null,
quantity: "10",
returnText: null,
shareText: null,
ticker: null,
type: kind === "stocks" ? "STOCK" : otherType,
}
/* eslint-enable unicorn/no-null */)));
const { unmount } = render(
<MantineProvider
theme={theme}
cssVariablesResolver={cssVariablesResolver}
forceColorScheme="light"
theme={theme}
>
<PositionSection
section={{
kind,
groups: positions.map((position) => ({
groups: positions.map(position => ({
key: position.displayName,
positions: [position],
})),
kind,
}}
/>
</MantineProvider>,
);
const bounds = positions.map((position) =>
const bounds = positions.map(position =>
screen.getByText(position.displayName).getBoundingClientRect(),
);
const context = `${kind} at ${width}px`;
@@ -64,10 +71,15 @@ it("keeps expanded positions vertical while other positions adapt to the viewpor
if (index === 0) continue;
const previous = bounds[index - 1];
if (kind === "other" && width === 1280) {
// eslint-disable-next-line vitest/no-conditional-expect -- The fixed table case selects the expected outcome; every case asserts its own branch.
expect(current.top, context).toBeCloseTo(previous.top, 0);
// eslint-disable-next-line vitest/no-conditional-expect -- The fixed table case selects the expected outcome; every case asserts its own branch.
expect(current.left, context).toBeGreaterThan(previous.right);
} else {
}
else {
// eslint-disable-next-line vitest/no-conditional-expect -- The fixed table case selects the expected outcome; every case asserts its own branch.
expect(current.left, context).toBeCloseTo(previous.left, 0);
// eslint-disable-next-line vitest/no-conditional-expect -- The fixed table case selects the expected outcome; every case asserts its own branch.
expect(current.top, context).toBeGreaterThan(previous.bottom);
}
}