fix(events): seven-date default period and picker from today (WealthLedger/frontend#63)
This commit is contained in:
@@ -18,12 +18,21 @@ import type { IncomeAnalytics } from "@/entities/income";
|
||||
import type { Portfolio } from "@/entities/portfolio";
|
||||
|
||||
import { AuthProvider } from "@/features/auth";
|
||||
import { defaultPeriod, formatDate } from "@/shared/lib";
|
||||
import { createTestQueryClient } from "@/test/query";
|
||||
import { resource } from "@/test/resource";
|
||||
import { server } from "@/test/server";
|
||||
|
||||
import { AppRoutes } from "./AppRoutes";
|
||||
|
||||
// Mantine calendar labels follow dayjs default (English) locale.
|
||||
function dayLabel(date: string) {
|
||||
const monthName = new Intl.DateTimeFormat("en", { month: "long" })
|
||||
.format(new Date(`${date}T12:00:00Z`));
|
||||
|
||||
return `${Number(date.slice(8))} ${monthName} ${date.slice(0, 4)}`;
|
||||
}
|
||||
|
||||
const accounts = [
|
||||
{ id: "a", name: "Основной" },
|
||||
{ id: "b", name: "ИИС" },
|
||||
@@ -233,7 +242,7 @@ describe("All accounts routes", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it.each(["operations", "events", "income"])(
|
||||
it.each(["operations", "income"])(
|
||||
"restores applied dates when switching accounts in %s",
|
||||
async (section) => {
|
||||
const search = "?from=2026-08-01&to=2026-08-31";
|
||||
@@ -261,6 +270,31 @@ describe("All accounts routes", () => {
|
||||
},
|
||||
);
|
||||
|
||||
it("restores applied dates when switching accounts in events", async () => {
|
||||
// The events calendar blocks past dates, so pick within selectable dates.
|
||||
const search = `?from=${defaultPeriod()[0]}&to=${defaultPeriod()[1]}`;
|
||||
renderPage(`/accounts/all/events${search}`);
|
||||
const picker = await screen.findByLabelText("Период");
|
||||
fireEvent.click(picker);
|
||||
const [fromDate, toDate] = defaultPeriod();
|
||||
fireEvent.click(
|
||||
await screen.findByRole("button", { name: dayLabel(fromDate) }),
|
||||
);
|
||||
fireEvent.click(
|
||||
await screen.findByRole("button", { name: dayLabel(toDate) }),
|
||||
);
|
||||
expect(screen.getByLabelText("Период")).toHaveTextContent(
|
||||
`${formatDate(fromDate)} – ${formatDate(toDate)}`,
|
||||
);
|
||||
fireEvent.click(screen.getByRole("combobox", { name: "Счёт" }));
|
||||
fireEvent.click(await screen.findByRole("option", { name: "ИИС" }));
|
||||
await waitFor(() =>
|
||||
expect(screen.getByLabelText("Текущий путь")).toHaveTextContent(
|
||||
`/accounts/b/events${search}`,
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
it("groups the same security and links its accounts and overview sections", async () => {
|
||||
renderPage("/accounts/all");
|
||||
expect(await screen.findAllByText("Сбербанк")).toHaveLength(1);
|
||||
|
||||
Reference in New Issue
Block a user