// @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");
});
});