feat(cards): filter operations by date range
This commit is contained in:
@@ -57,6 +57,7 @@ function setup(
|
||||
clear: () => {},
|
||||
});
|
||||
const requests: string[] = [];
|
||||
const summaryRequests: string[] = [];
|
||||
server.use(
|
||||
http.get("*/api/v1/bank-cards/a", () =>
|
||||
options.missing
|
||||
@@ -82,8 +83,9 @@ function setup(
|
||||
hasNext: Number(new URL(request.url).searchParams.get("page")) < 3,
|
||||
});
|
||||
}),
|
||||
http.get("*/api/v1/bank-cards/summary", () =>
|
||||
options.summaryError
|
||||
http.get("*/api/v1/bank-cards/summary", ({ request }) => {
|
||||
summaryRequests.push(new URL(request.url).search);
|
||||
return options.summaryError
|
||||
? HttpResponse.error()
|
||||
: HttpResponse.json({
|
||||
month: "2026-08",
|
||||
@@ -92,8 +94,8 @@ function setup(
|
||||
refunds: money("50"),
|
||||
net: money("-50"),
|
||||
categories: [],
|
||||
}),
|
||||
),
|
||||
});
|
||||
}),
|
||||
);
|
||||
const client = createTestQueryClient();
|
||||
render(
|
||||
@@ -107,18 +109,18 @@ function setup(
|
||||
</MantineProvider>
|
||||
</QueryClientProvider>,
|
||||
);
|
||||
return { requests, client };
|
||||
return { requests, summaryRequests, client };
|
||||
}
|
||||
describe("CardPage", () => {
|
||||
it("shares month with history, pages the journal and keeps current balance", async () => {
|
||||
const { requests } = setup();
|
||||
it("shares date range with history, pages the journal and keeps current balance", async () => {
|
||||
const { requests, summaryRequests } = setup();
|
||||
await screen.findByRole("heading", { name: "Повседневная" });
|
||||
expect(
|
||||
await screen.findByText("Перевод на «Запасная»"),
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByText("03.08.2026")).toBeInTheDocument();
|
||||
expect(screen.getByText("−50,01 ₽")).toBeInTheDocument();
|
||||
expect(screen.getByText("-50 ₽")).toBeInTheDocument();
|
||||
expect(await screen.findByText("-50,00 ₽")).toBeInTheDocument();
|
||||
expect(screen.getByRole("button", { name: "Назад" })).toBeDisabled();
|
||||
expect(requests.every((value) => value.includes("limit=10"))).toBe(true);
|
||||
fireEvent.click(screen.getByRole("button", { name: "Далее" }));
|
||||
@@ -135,15 +137,30 @@ describe("CardPage", () => {
|
||||
expect(
|
||||
screen.getByRole("button", { name: "Страница 3" }),
|
||||
).toHaveTextContent("3");
|
||||
fireEvent.click(screen.getByLabelText("Месяц"));
|
||||
fireEvent.click(await screen.findByRole("button", { name: "Jul" }));
|
||||
fireEvent.click(screen.getByLabelText("Период"));
|
||||
fireEvent.click(
|
||||
await screen.findByRole("button", { name: "10 August 2026" }),
|
||||
);
|
||||
fireEvent.click(
|
||||
await screen.findByRole("button", { name: "20 August 2026" }),
|
||||
);
|
||||
await waitFor(() =>
|
||||
expect(
|
||||
requests.some(
|
||||
(v) => v.includes("month=2026-07") && v.includes("page=1"),
|
||||
(v) =>
|
||||
v.includes("from=2026-08-10") &&
|
||||
v.includes("to=2026-08-20") &&
|
||||
v.includes("page=1"),
|
||||
),
|
||||
).toBe(true),
|
||||
);
|
||||
await waitFor(() =>
|
||||
expect(summaryRequests.at(-1)).toContain("from=2026-08-10&to=2026-08-20"),
|
||||
);
|
||||
expect(screen.getByRole("link", { name: "Карта" })).toHaveAttribute(
|
||||
"href",
|
||||
"/cards/b?from=2026-08-10&to=2026-08-20",
|
||||
);
|
||||
expect(screen.getByText(/10\s000 ₽/)).toBeInTheDocument();
|
||||
});
|
||||
it("keeps the journal in place while the next page loads", async () => {
|
||||
|
||||
Reference in New Issue
Block a user