import { describe, it, expect } from "vitest";
import { render, screen } from "@testing-library/react";
import { DiveSitesLabel } from "./dive-sites-label";
// The label compacts a dive's sites to "Pescador Island +2", so what a render has
// to pin down is the other half of that bargain: the hidden names are one hover
// away, and a dive that hides nothing gets no tooltip repeating what it already
// shows.
const sites = [
{
uuid: "a",
name: "Pescador Island",
location: { name: "Moalboal, Philippines" },
},
{ uuid: "b", name: "Panagsama Wall" },
{ uuid: "c", name: "Tongo Point" },
];
describe("DiveSitesLabel", () => {
it("hints every name, not just the ones the +N stands for", () => {
render();
expect(
screen.getByTitle("Pescador Island, Panagsama Wall, Tongo Point"),
).toBeInTheDocument();
});
it("hangs the hint where the whole label is, so the name hovers too", () => {
// Not on the "+2" alone, which is a two-character hover target.
render();
const hinted = screen.getByTitle(
"Pescador Island, Panagsama Wall, Tongo Point",
);
expect(hinted).toHaveTextContent("Pescador Island");
expect(hinted).toHaveTextContent("+2");
});
it("leaves a single site untitled", () => {
// A tooltip identical to the text under the cursor is worse than none.
const { container } = render();
expect(container.querySelector("[title]")).toBeNull();
expect(screen.getByText("Pescador Island")).toBeInTheDocument();
});
it("still counts the sites it hides", () => {
render();
expect(screen.getByText("+2")).toBeInTheDocument();
});
it("renders a placeholder for a dive with no sites", () => {
render();
expect(screen.getByText("-")).toBeInTheDocument();
});
});