// @vitest-environment jsdom // // One meter for every place that shows how full a quota is: it turns to a warning at the share it // SHOWS (the rounded percent), so the user's own rail and the admin's Storage tab never disagree // about the same fill, and it reads as a meter with that percent. import { afterEach, describe, expect, it } from "vitest"; import { cleanup, render, screen } from "@testing-library/react"; import { Meter } from "./Meter"; afterEach(cleanup); const fill = () => screen.getByRole("meter").firstElementChild!; describe("Meter", () => { it.each([ [896, "90", true], [894, "89", false], [2000, "100", true], ])("%i of 1000 shows its percent and warns from 90", (value, shown, danger) => { render(); expect(screen.getByRole("meter", { name: "Storage" }).getAttribute("aria-valuenow")).toBe( shown, ); expect(fill().classList.contains("bg-danger")).toBe(danger); }); it("an unset limit is an empty meter, never a division by zero", () => { render(); expect(screen.getByRole("meter").getAttribute("aria-valuenow")).toBe("0"); }); });