diff --git a/src/app/routes/AppRoutes/AllAccounts.test.tsx b/src/app/routes/AppRoutes/AllAccounts.test.tsx index c2e8452..65c3258 100644 --- a/src/app/routes/AppRoutes/AllAccounts.test.tsx +++ b/src/app/routes/AppRoutes/AllAccounts.test.tsx @@ -227,9 +227,9 @@ beforeEach(() => { describe("All accounts routes", () => { it.each([ ["/accounts/all", "Все счета"], - ["/accounts/all/operations", "Журнал операций"], + ["/accounts/all/operations", "История операций"], ["/accounts/all/income?from=2026-08-01&to=2026-08-31", "Пассивный доход"], - ["/accounts/all/events", "Будущие события"], + ["/accounts/all/events", "Предстоящие события"], ])("opens %s directly", async (path, title) => { renderPage(path); expect( @@ -311,9 +311,9 @@ describe("All accounts routes", () => { ); for (const [suffix, tab] of [ - ["operations", "Операции"], + ["operations", "История операций"], ["income", "Доход"], - ["events", "События"], + ["events", "Предстоящие события"], ]) { fireEvent.click(screen.getByRole("tab", { name: tab })); expect(screen.getByRole("link", { name: "Подробнее" })) diff --git a/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.test.tsx b/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.test.tsx index e08231d..acc9bbe 100644 --- a/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.test.tsx +++ b/src/app/ui/AppBreadcrumbs/AppBreadcrumbs.test.tsx @@ -55,9 +55,9 @@ describe("AppBreadcrumbs", () => { }); it.each([ - ["operations", "Операции"], - ["OPERATIONS", "Операции"], - ["events", "Будущие события"], + ["operations", "История операций"], + ["OPERATIONS", "История операций"], + ["events", "Предстоящие события"], ["income", "Пассивный доход"], ])("links to the account hierarchy from %s", (section, title) => { renderBreadcrumbs(`/accounts/account-1/${section}`, [ diff --git a/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.test.tsx b/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.test.tsx index d43def2..7224ca8 100644 --- a/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.test.tsx +++ b/src/pages/account-operations/ui/AccountOperationsPage/AccountOperationsPage.test.tsx @@ -440,7 +440,7 @@ describe("AccountOperationsPage", () => { renderPage(); expect( - await screen.findByRole("heading", { name: "Журнал операций" }), + await screen.findByRole("heading", { name: "История операций" }), ).toBeInTheDocument(); expect( screen.queryByRole("link", { name: "К счету" }), @@ -482,7 +482,7 @@ describe("AccountOperationsPage", () => { renderPage(); expect( - await screen.findByRole("heading", { name: "Журнал операций" }), + await screen.findByRole("heading", { name: "История операций" }), ).toBeInTheDocument(); await waitFor(() => expect(searches.length).toBeGreaterThan(0)); const countBefore = searches.length; @@ -521,7 +521,7 @@ describe("AccountOperationsPage", () => { renderPage(); expect( - await screen.findByRole("heading", { name: "Журнал операций" }), + await screen.findByRole("heading", { name: "История операций" }), ).toBeInTheDocument(); fireEvent.click(screen.getByRole("combobox", { name: "Категории" })); fireEvent.click(await screen.findByText("Налог")); @@ -579,7 +579,7 @@ describe("AccountOperationsPage", () => { ); renderPage(); expect( - await screen.findByText("Не удалось загрузить журнал", undefined, { + await screen.findByText("Не удалось загрузить историю операций", undefined, { timeout: RETRIES_EXHAUSTED_MS, }), ).toBeInTheDocument(); diff --git a/src/pages/account/ui/AccountPage/AccountPage.test.tsx b/src/pages/account/ui/AccountPage/AccountPage.test.tsx index 82bc249..1a6797f 100644 --- a/src/pages/account/ui/AccountPage/AccountPage.test.tsx +++ b/src/pages/account/ui/AccountPage/AccountPage.test.tsx @@ -850,9 +850,9 @@ describe("AccountPage states", () => { expect( screen.getByRole("heading", { name: "Портфель пока пуст" }), ).toBeInTheDocument(); - expect(screen.getByRole("link", { name: "Открыть журнал" })) + expect(screen.getByRole("link", { name: "Открыть историю операций" })) .toBeInTheDocument(); - expect(screen.getByRole("link", { name: "Открыть будущие события" })) + expect(screen.getByRole("link", { name: "Открыть предстоящие события" })) .toBeInTheDocument(); expect(screen.getByRole("link", { name: "Открыть пассивный доход" })) .toBeInTheDocument(); @@ -893,10 +893,10 @@ describe("AccountPage states", () => { }), ).toBeVisible(); expect( - screen.getByRole("status", { name: "Загрузка будущих событий" }), + screen.getByRole("status", { name: "Загрузка предстоящих событий" }), ).toBeVisible(); expect( - screen.queryByText("На ближайшие 30 дней событий не найдено."), + screen.queryByText("На ближайшие 30 дней предстоящих событий не найдено."), ).not.toBeInTheDocument(); expect(screen.getByText("Загрузка дохода текущего месяца")).toBeVisible(); expect(screen.queryByText("Нет текущих сумм")).not.toBeInTheDocument(); @@ -1076,7 +1076,7 @@ describe("AccountPage states", () => { />, ); - fireEvent.click(screen.getByRole("tab", { name: "Операции" })); + fireEvent.click(screen.getByRole("tab", { name: "История операций" })); expect( screen.getByText("Пока недоступно"), ).toBeInTheDocument(); @@ -1115,7 +1115,7 @@ describe("AccountPage states", () => { />, ); - fireEvent.click(screen.getByRole("tab", { name: "Операции" })); + fireEvent.click(screen.getByRole("tab", { name: "История операций" })); expect(screen.getByText("Сделка")).toBeInTheDocument(); expect(screen.getByText("−12 ₽")).toBeInTheDocument(); }); @@ -1169,8 +1169,8 @@ describe("AccountPage states", () => { />, ); - fireEvent.click(screen.getByRole("tab", { name: "События" })); - const section = screen.getByRole("tabpanel", { name: "События" }); + fireEvent.click(screen.getByRole("tab", { name: "Предстоящие события" })); + const section = screen.getByRole("tabpanel", { name: "Предстоящие события" }); const content = within(section); const text = section.textContent ?? ""; @@ -1211,15 +1211,15 @@ describe("AccountPage states", () => { />, ); - fireEvent.click(screen.getByRole("tab", { name: "События" })); + fireEvent.click(screen.getByRole("tab", { name: "Предстоящие события" })); const content = within( - screen.getByRole("tabpanel", { name: "События" }), + screen.getByRole("tabpanel", { name: "Предстоящие события" }), ); if (state === "loading") { const skeleton = content.getByRole("status", { - name: "Загрузка будущих событий", + name: "Загрузка предстоящих событий", }); // eslint-disable-next-line vitest/no-conditional-expect -- The fixed table case selects the expected outcome; every case asserts its own branch. @@ -1230,7 +1230,7 @@ describe("AccountPage states", () => { else { // eslint-disable-next-line vitest/no-conditional-expect -- The table case deterministically selects the empty state. expect( - content.getByText("На ближайшие 30 дней событий не найдено."), + content.getByText("На ближайшие 30 дней предстоящих событий не найдено."), ).toBeVisible(); } @@ -1251,7 +1251,7 @@ describe("AccountPage states", () => { />, ); - fireEvent.click(screen.getByRole("tab", { name: "События" })); + fireEvent.click(screen.getByRole("tab", { name: "Предстоящие события" })); expect( screen.getByText("Данные появятся здесь, когда чтение восстановится."), ).toBeInTheDocument(); @@ -1522,8 +1522,8 @@ describe("AccountPage states", () => { .toBeVisible(); expect(screen.queryByText("Вторая")).not.toBeInTheDocument(); - fireEvent.click(screen.getByRole("tab", { name: "Операции" })); - expect(screen.getByText("Последних событий пока нет.")).toBeVisible(); + fireEvent.click(screen.getByRole("tab", { name: "История операций" })); + expect(screen.getByText("Последних операций пока нет.")).toBeVisible(); }); it("links operation, event and income previews to their detail pages", () => { @@ -1538,8 +1538,8 @@ describe("AccountPage states", () => { ); for (const [tab, href] of [ - ["Операции", "/accounts/account-1/operations"], - ["События", "/accounts/account-1/events"], + ["История операций", "/accounts/account-1/operations"], + ["Предстоящие события", "/accounts/account-1/events"], ["Доход", "/accounts/account-1/income"], ]) { fireEvent.click(screen.getByRole("tab", { name: tab })); diff --git a/src/pages/bond/ui/BondPage/BondPage.test.tsx b/src/pages/bond/ui/BondPage/BondPage.test.tsx index caf8345..0cc2c40 100644 --- a/src/pages/bond/ui/BondPage/BondPage.test.tsx +++ b/src/pages/bond/ui/BondPage/BondPage.test.tsx @@ -351,7 +351,7 @@ describe("bond page", () => { screen.queryByRole("heading", { name: "Моя позиция" }), ).not.toBeInTheDocument(); expect( - screen.getByRole("heading", { name: "Моя история событий" }), + screen.getByRole("heading", { name: "История операций" }), ).toBeVisible(); }); it( diff --git a/src/pages/stock/ui/StockPage/StockPage.test.tsx b/src/pages/stock/ui/StockPage/StockPage.test.tsx index e66a4a3..a64e6b3 100644 --- a/src/pages/stock/ui/StockPage/StockPage.test.tsx +++ b/src/pages/stock/ui/StockPage/StockPage.test.tsx @@ -490,7 +490,7 @@ describe("stock page", () => { fireEvent.click(screen.getByRole("button", { name: "Далее" })); controls.recoverOperations(); expect(screen.queryByRole("button", { name: "Повторить" })).not.toBeInTheDocument(); - expect(screen.getByRole("heading", { name: "Моя история событий" })).toBeVisible(); + expect(screen.getByRole("heading", { name: "История операций" })).toBeVisible(); }, ); it("keeps the last quote without manual refresh", async () => { diff --git a/src/shared/i18n/locales/ru.ts b/src/shared/i18n/locales/ru.ts index e6583d2..a76db70 100644 --- a/src/shared/i18n/locales/ru.ts +++ b/src/shared/i18n/locales/ru.ts @@ -274,7 +274,7 @@ const ru = { COUPON_TYPE_VARIABLE: "Переменный", }, couponWindow: - "Календарь выпуска с {{from}} по {{to}}. Личные зачисления показаны в истории событий.", + "Календарь выпуска с {{from}} по {{to}}. Полученные выплаты показаны в истории операций.", couponYield: "Текущая купонная доходность, годовых", couponYieldNote: "Купонная доходность = ближайший купон × 365 / дней в купонном периоде / цена без НКД × 100 %. Это годовая оценка при сохранении размера купона и номинала, без налогов, комиссий и реинвестирования; для плавающего или переменного купона будущий доход изменится.", @@ -343,10 +343,10 @@ const ru = { breadcrumbs: { accountFallback: "Счет", accounts: "Брокерские счета", - events: "Будущие события", + events: "Предстоящие события", income: "Пассивный доход", label: "Хлебные крошки", - operations: "Операции", + operations: "История операций", settings: "Настройки", }, entryGroup: { @@ -356,20 +356,20 @@ const ru = { dateKind: { event: "Дата события", registry: "Дата реестра" }, emptyText: "Доступные источники не сообщили о купонах, дивидендах, погашениях или офертах в этом периоде.", - emptyTitle: "За выбранный период событий не найдено", - errorText: "Попробуйте запросить прогноз еще раз.", - errorTitle: "Не удалось загрузить будущие события", + emptyTitle: "На выбранный период предстоящих событий не найдено", + errorText: "Попробуйте загрузить предстоящие события ещё раз.", + errorTitle: "Не удалось загрузить предстоящие события", forecastWindow: "Прогноз от {{date}} на {{from}} – {{to}}", hint: "Прогноз рассчитан по текущей позиции до налогов. Покрытие зависит от доступных данных MOEX.", noAmount: "Сумма неизвестна", - open: "Открыть будущие события", + open: "Открыть предстоящие события", projectedAmount: "Ожидаемая сумма", - recentEmpty: "На ближайшие 30 дней событий не найдено.", - recentError: "Не удалось загрузить будущие события.", - recentLoading: "Загрузка будущих событий", - recentTitle: "Будущие события", + recentEmpty: "На ближайшие 30 дней предстоящих событий не найдено.", + recentError: "Не удалось загрузить предстоящие события.", + recentLoading: "Загрузка предстоящих событий", + recentTitle: "Предстоящие события", retry: "Повторить", - title: "Будущие события", + title: "Предстоящие события", type: { coupon: "Купон", dividend: "Дивиденд", @@ -451,14 +451,14 @@ const ru = { dividend: "Дивиденд", }, }, - errorText: "Попробуйте запросить операции еще раз.", - errorTitle: "Не удалось загрузить журнал", + errorText: "Попробуйте загрузить историю операций ещё раз.", + errorTitle: "Не удалось загрузить историю операций", from: "С", next: "Далее", noInstrument: "Без инструмента", noMoney: "Без движения денег", occurredAt: "Исполнено {{date}}", - open: "Открыть журнал", + open: "Открыть историю операций", operationType: { buy: "Покупка", coupon: "Купон", @@ -475,13 +475,13 @@ const ru = { previous: "Назад", price: "Цена: {{value}}", quantity: "{{value}} шт.", - recentEmpty: "Последних событий пока нет.", - recentError: "Не удалось загрузить последние события.", - recentLoading: "Загрузка последних событий", - recentTitle: "Последние события", + recentEmpty: "Последних операций пока нет.", + recentError: "Не удалось загрузить последние операции.", + recentLoading: "Загрузка последних операций", + recentTitle: "Последние операции", reset: "Сбросить", retry: "Повторить", - title: "Журнал операций", + title: "История операций", to: "По", }, navigation: { @@ -582,9 +582,9 @@ const ru = { }, tabs: { cash: "Деньги", - events: "События", + events: "Предстоящие события", income: "Доход", - operations: "Операции", + operations: "История операций", positions: "Позиции", }, title: "Портфель", @@ -637,10 +637,10 @@ const ru = { dividendNote: "Личная сумма — оценка по текущему количеству, не гарантия выплаты. Налоги не сопоставлены; дата выплаты компании может отличаться от дня зачисления на ваш счёт.", dividendWindow: - "События компании с {{from}} по {{to}}. Личные зачисления показаны отдельно в истории событий.", + "События компании с {{from}} по {{to}}. Полученные выплаты показаны отдельно в истории операций.", estimateUnavailable: "Данные позиции не удалось обновить. Личная оценка недоступна или рассчитана по сохранённой позиции.", - eventFilter: "Фильтр событий", + eventFilter: "Фильтр операций", eventPrice: "Цена: {{value}}", eventQuantity: "{{value}} шт.", exchanges: { @@ -656,7 +656,7 @@ const ru = { trades: "Сделки", }, forming: "Формируется", - history: "Моя история событий", + history: "История операций", historyNote: "Операции по этой акции на доступных открытых счетах, включая периоды до текущего года. Дата сделки — дата операции брокера; количество — исполненная часть. История закрытых счетов не включена.", incomplete: "Последняя свеча ещё формируется: её цена может измениться.",