import { describe, expect, it } from "vitest";
import { validateFeedbackMessage, validateFeedbackSelection, viewportCategory } from "./feedback";

describe("feedbackvalidering", () => {
  it("godtar meningsfull feedback uten kontaktinfo", () => {
    const result = validateFeedbackMessage("Grafen er vanskelig å lese når rapportene ligger tett over flere dager.");

    expect(result.ok).toBe(true);
  });

  it("avviser kort eller meningsløst innhold", () => {
    expect(validateFeedbackMessage("1234567890 !!!!!").ok).toBe(false);
    expect(validateFeedbackMessage("aaaaaaaaaaaaaaa").errors).toContain("feedback.validationMinWords");
  });

  it("blokkerer kontaktinfo-lignende tekst i frontend", () => {
    expect(validateFeedbackMessage("Kontakt meg på test@example.com fordi grafen er feil i oversikten.").ok).toBe(false);
    expect(validateFeedbackMessage("Ring 987 65 432 fordi rapporten ikke lagres riktig.").ok).toBe(false);
    expect(validateFeedbackMessage("Feilen vises fra 192.168.10.39 når jeg åpner grafen.").ok).toBe(false);
  });

  it("krever gyldig type og minst ett område", () => {
    expect(validateFeedbackSelection("bug", ["ui"])).toEqual([]);
    expect(validateFeedbackSelection("question", ["ui"])).toContain("feedback.validationType");
    expect(validateFeedbackSelection("bug", [])).toContain("feedback.validationArea");
  });

  it("klassifiserer viewport uten identifiserende data", () => {
    expect(viewportCategory(390)).toBe("mobile");
    expect(viewportCategory(800)).toBe("tablet");
    expect(viewportCategory(1280)).toBe("desktop");
  });
});
