fix(pagination): on:change dispatches with correct value (#2194)

This commit is contained in:
Eric Liu 2025-09-05 09:00:51 -07:00 committed by GitHub
commit 44a6cc0dfc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 27 additions and 8 deletions

View file

@ -75,7 +75,7 @@ describe("Pagination", () => {
const select = screen.getByRole("combobox", { name: "Items per page:" });
await user.selectOptions(select, "15");
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 10 });
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 15 });
expect(consoleLog).toHaveBeenCalledWith("update", {
pageSize: 15,
page: 1,
@ -91,7 +91,7 @@ describe("Pagination", () => {
const pageSelect = screen.getAllByRole("combobox");
await user.selectOptions(pageSelect[0], "5");
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 10 });
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 5 });
expect(consoleLog).toHaveBeenCalledWith("update", { pageSize: 5, page: 1 });
});
@ -169,7 +169,7 @@ describe("Pagination", () => {
// Change page size
const pageSizeSelect = screen.getAllByRole("combobox");
await user.selectOptions(pageSizeSelect[0], "15");
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 10 });
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 15 });
expect(consoleLog).toHaveBeenCalledWith("update", {
pageSize: 15,
page: 1,
@ -178,7 +178,7 @@ describe("Pagination", () => {
// Change page
const pageSelect = screen.getAllByRole("combobox");
await user.selectOptions(pageSelect[1], "2");
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 10 });
expect(consoleLog).toHaveBeenCalledWith("change", { page: 2 });
expect(consoleLog).toHaveBeenCalledWith("update", {
pageSize: 15,
page: 2,
@ -257,4 +257,23 @@ describe("Pagination", () => {
expect(screen.getByText(/110 of 100000/)).toBeInTheDocument();
});
it("should dispatch change event with new value, not previous value", async () => {
const consoleLog = vi.spyOn(console, "log");
render(Pagination, {
props: { totalItems: 102, pageSizes: [10, 15, 20] },
});
const pageSizeSelect = screen.getByRole("combobox", {
name: "Items per page:",
});
await user.selectOptions(pageSizeSelect, "15");
expect(consoleLog).toHaveBeenCalledWith("change", { pageSize: 15 });
const pageSelect = screen.getAllByRole("combobox")[1];
await user.selectOptions(pageSelect, "2");
expect(consoleLog).toHaveBeenCalledWith("change", { page: 2 });
});
});