// @vitest-environment jsdom import { cleanup, fireEvent, render, screen } from "@testing-library/react"; import { afterEach, describe, expect, it, vi } from "vitest"; import RefreshRateSelect from "./refresh-rate-select"; const replace = vi.fn(); vi.mock("next/navigation", () => ({ useRouter: () => ({ replace }), usePathname: () => "/", })); afterEach(cleanup); describe("RefreshRateSelect", () => { it("shows the current rate and every option in seconds", () => { render(); const select = screen.getByRole("combobox"); expect(select.value).toBe("500"); expect([...select.options].map((o) => o.text)).toEqual(["0.25 s", "0.5 s", "1 s", "2 s", "5 s"]); }); it("writes the chosen rate to the URL without scrolling", () => { render(); fireEvent.change(screen.getByRole("combobox"), { target: { value: "250" } }); expect(replace).toHaveBeenCalledWith("/?refresh=250", { scroll: false }); }); });