supportMailto.test.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /* @vitest-environment node */
  2. import { describe, it, expect } from "vitest";
  3. import { buildSupportMailto } from "./supportMailto.js";
  4. function decodeMailto(mailto) {
  5. const url = new URL(mailto);
  6. return {
  7. to: url.pathname,
  8. subject: url.searchParams.get("subject") || "",
  9. body: url.searchParams.get("body") || "",
  10. };
  11. }
  12. describe("lib/frontend/support/supportMailto", () => {
  13. it("builds a branch-specific subject and includes context lines", () => {
  14. const mailto = buildSupportMailto({
  15. user: { role: "branch", branchId: "NL20" },
  16. pathname: "/profile",
  17. currentUrl: "https://example.local/profile",
  18. userAgent: "Vitest-UA",
  19. });
  20. const parsed = decodeMailto(mailto);
  21. expect(parsed.to).toBe("info@attus.de");
  22. expect(parsed.subject).toBe("Support – RHL Lieferscheine (NL20)");
  23. expect(parsed.body).toContain("Benutzer: Niederlassung (NL20)");
  24. expect(parsed.body).toContain("Route: /profile");
  25. expect(parsed.body).toContain("URL: https://example.local/profile");
  26. expect(parsed.body).toContain("User-Agent: Vitest-UA");
  27. expect(parsed.body).toContain("Zeitpunkt:");
  28. expect(parsed.body).toContain("ISO:");
  29. });
  30. it("builds a generic subject without branch", () => {
  31. const mailto = buildSupportMailto({
  32. user: { role: "admin", branchId: null },
  33. pathname: "/",
  34. currentUrl: "",
  35. userAgent: "",
  36. });
  37. const parsed = decodeMailto(mailto);
  38. expect(parsed.to).toBe("info@attus.de");
  39. expect(parsed.subject).toBe("Support – RHL Lieferscheine");
  40. expect(parsed.body).toContain("Benutzer: Admin");
  41. expect(parsed.body).toContain("Route: /");
  42. expect(parsed.body).toContain("URL: (bitte einfügen)");
  43. expect(parsed.body).toContain("User-Agent: (unbekannt)");
  44. });
  45. });