import { describe, it, expect } from "vitest";
import {
  templateCreateSchema,
  templateMerkmalSchema,
  aliasSchema,
} from "./template";

describe("templateCreateSchema", () => {
  it("akzeptiert gültige Vorlage", () => {
    const r = templateCreateSchema.safeParse({
      code: "HLF 3",
      name: "Hilfeleistungsfahrzeug 3",
    });
    expect(r.success).toBe(true);
  });

  it("verlangt Code und Name", () => {
    expect(templateCreateSchema.safeParse({ code: "", name: "" }).success).toBe(
      false,
    );
  });
});

describe("templateMerkmalSchema — typisierter Vorgabewert", () => {
  it("akzeptiert num-Vorgabewert", () => {
    const r = templateMerkmalSchema.safeParse({
      merkmalId: "11111111-1111-1111-1111-111111111111",
      vorgabewertNum: 2000,
      pflicht: true,
    });
    expect(r.success).toBe(true);
  });

  it("akzeptiert leere Vorgabewerte", () => {
    const r = templateMerkmalSchema.safeParse({
      merkmalId: "11111111-1111-1111-1111-111111111111",
    });
    expect(r.success).toBe(true);
  });

  it("lehnt fehlende merkmalId ab", () => {
    expect(templateMerkmalSchema.safeParse({ vorgabewertNum: 1 }).success).toBe(
      false,
    );
  });
});

describe("aliasSchema", () => {
  it("akzeptiert bestätigten Alias", () => {
    const r = aliasSchema.safeParse({
      templateId: "11111111-1111-1111-1111-111111111111",
      alias: "RLFA 2000",
      bestaetigt: true,
    });
    expect(r.success).toBe(true);
  });

  it("bestaetigt default false", () => {
    const r = aliasSchema.parse({
      templateId: "11111111-1111-1111-1111-111111111111",
      alias: "LF",
    });
    expect(r.bestaetigt).toBe(false);
  });
});
