import { describe, it, expect } from "vitest";
import { expandNameQuery } from "@/lib/admin/codes";

describe("expandNameQuery (Allrad-Namensregel)", () => {
  it("expandiert HLFA 3 zu HLFA 3 + HLF 3 und impliziert Allrad", () => {
    const r = expandNameQuery("HLFA 3");
    expect(r.nameLikes).toEqual(["HLFA 3", "HLF 3"]);
    expect(r.allradImpliziert).toBe(true);
  });

  it("expandiert HLFA 1 W korrekt (Rest bleibt erhalten)", () => {
    const r = expandNameQuery("HLFA 1 W");
    expect(r.nameLikes).toEqual(["HLFA 1 W", "HLF 1 W"]);
    expect(r.allradImpliziert).toBe(true);
  });

  it("expandiert MTFA (ohne Suffix) zu MTFA + MTF", () => {
    const r = expandNameQuery("MTFA");
    expect(r.nameLikes).toEqual(["MTFA", "MTF"]);
    expect(r.allradImpliziert).toBe(true);
  });

  it("lässt HLF 3 unverändert (kein Allrad)", () => {
    const r = expandNameQuery("HLF 3");
    expect(r.nameLikes).toEqual(["HLF 3"]);
    expect(r.allradImpliziert).toBe(false);
  });

  it("normalisiert Mehrfach-Leerzeichen", () => {
    const r = expandNameQuery("HLFA   3");
    expect(r.nameLikes).toEqual(["HLFA 3", "HLF 3"]);
  });

  it("behandelt leere Eingabe ohne Treffer", () => {
    const r = expandNameQuery("   ");
    expect(r.nameLikes).toEqual([]);
    expect(r.allradImpliziert).toBe(false);
  });

  it("behandelt Freitext (kein Code) als einzelnen Like ohne Allrad", () => {
    const r = expandNameQuery("Florian Tulln 1");
    expect(r.nameLikes).toEqual(["Florian Tulln 1"]);
    expect(r.allradImpliziert).toBe(false);
  });
});
