// src/lib/backlink/overview-logic.test.ts
import { expect, test } from "bun:test";
import {
  buildDrBuckets,
  drBucketLabel,
  suggestedActions,
} from "./overview-logic";

test("drBucketLabel: bornes exactes + null", () => {
  expect(drBucketLabel(null)).toBe("N/A");
  expect(drBucketLabel(0)).toBe("0–20");
  expect(drBucketLabel(20)).toBe("0–20");
  expect(drBucketLabel(21)).toBe("21–40");
  expect(drBucketLabel(40)).toBe("21–40");
  expect(drBucketLabel(41)).toBe("41–60");
  expect(drBucketLabel(60)).toBe("41–60");
  expect(drBucketLabel(61)).toBe("61–80");
  expect(drBucketLabel(80)).toBe("61–80");
  expect(drBucketLabel(81)).toBe("81–100");
  expect(drBucketLabel(100)).toBe("81–100");
});

test("buildDrBuckets: 6 buckets ordonnés, counts à 0 inclus", () => {
  const buckets = buildDrBuckets([null, 10, 20, 35, 90]);
  expect(buckets.map((b) => b.label)).toEqual([
    "0–20",
    "21–40",
    "41–60",
    "61–80",
    "81–100",
    "N/A",
  ]);
  expect(buckets.map((b) => b.count)).toEqual([2, 1, 0, 0, 1, 1]);
});

test("suggestedActions: priorité, max 4, vide", () => {
  expect(
    suggestedActions({
      lostSite: 0,
      toxicSite: 0,
      prospects: 0,
      opportunities: 0,
    }),
  ).toEqual([]);
  const all = suggestedActions({
    lostSite: 2,
    toxicSite: 1,
    prospects: 3,
    opportunities: 5,
  });
  expect(all).toEqual([
    { label: "2 lien(s) perdu(s) à reconquérir", href: "/backlink/planning" },
    { label: "1 toxique(s) à examiner (disavow)", href: "/backlink/planning" },
    { label: "3 prospect(s) à planifier", href: "/backlink/planning" },
    { label: "5 opportunité(s) à prospecter", href: "/backlink/recherche" },
  ]);
  expect(
    suggestedActions({
      lostSite: 0,
      toxicSite: 0,
      prospects: 2,
      opportunities: 0,
    }),
  ).toEqual([
    { label: "2 prospect(s) à planifier", href: "/backlink/planning" },
  ]);
});
