import { expect, test } from "bun:test";
import { topPageByQuery } from "./pages";
import type { GscQueryPageRow } from "./types";

const row = (
  query: string,
  page: string,
  clicks: number,
  impressions = 0,
): GscQueryPageRow => ({
  query,
  page,
  clicks,
  impressions,
  ctr: 0,
  position: 1,
});

test("topPageByQuery: max clics par query (insensible à la casse de la query)", () => {
  const m = topPageByQuery([
    row("Audit", "https://a.fr/p1", 5),
    row("audit", "https://a.fr/p2", 9),
    row("autre", "https://a.fr/x", 1),
  ]);
  expect(m.get("audit")).toBe("https://a.fr/p2");
  expect(m.get("autre")).toBe("https://a.fr/x");
});

test("topPageByQuery: tie-break par impressions", () => {
  const m = topPageByQuery([
    row("q", "https://a.fr/p1", 3, 10),
    row("q", "https://a.fr/p2", 3, 50),
  ]);
  expect(m.get("q")).toBe("https://a.fr/p2");
});
