import { describe, expect, it } from "vitest";
import { siteIdFromPathname } from "./active-site";

describe("siteIdFromPathname", () => {
  it("extrait l'id depuis une page de site", () => {
    expect(siteIdFromPathname("/settings/sites/018f-abc")).toBe("018f-abc");
    expect(siteIdFromPathname("/settings/sites/018f-abc/")).toBe("018f-abc");
    expect(siteIdFromPathname("/settings/sites/018f-abc/pages")).toBe("018f-abc");
  });

  it("rend null hors d'une page de site", () => {
    expect(siteIdFromPathname("/settings/sites")).toBeNull();
    expect(siteIdFromPathname("/settings/sites/")).toBeNull();
    expect(siteIdFromPathname("/settings/sites/new")).toBeNull();
    expect(siteIdFromPathname("/settings")).toBeNull();
    expect(siteIdFromPathname("/dashboard")).toBeNull();
    expect(siteIdFromPathname("/settings/security")).toBeNull();
    expect(siteIdFromPathname("/")).toBeNull();
    expect(siteIdFromPathname("")).toBeNull();
  });

  it("extrait l'id depuis une surface de travail du site", () => {
    expect(siteIdFromPathname("/sites/018f-abc/keywords")).toBe("018f-abc");
    expect(siteIdFromPathname("/sites/018f-abc/keywords/imports/42")).toBe("018f-abc");
    // Croisée le temps d'une redirection vers `/settings/sites/<id>` : le switcher a
    // quand même raison de marquer ce site actif.
    expect(siteIdFromPathname("/sites/018f-abc")).toBe("018f-abc");
  });

  it("rend null sur les routes /sites qui ne désignent pas un site", () => {
    expect(siteIdFromPathname("/sites")).toBeNull();
    expect(siteIdFromPathname("/sites/")).toBeNull();
    expect(siteIdFromPathname("/sites/new")).toBeNull();
  });
});
