import { describe, expect, it } from "vitest"; import { readFlash, withFlash } from "@/lib/admin-feedback"; describe("withFlash", () => { it("returns the plain path when there are no messages", () => { expect(withFlash("/admin/smtp", {})).toBe("/admin/smtp"); }); it("appends a success message", () => { expect(withFlash("/admin/smtp", { success: "Saved." })).toBe("/admin/smtp?success=Saved."); }); it("appends an error message", () => { expect(withFlash("/admin/smtp", { error: "Nope." })).toBe("/admin/smtp?error=Nope."); }); it("appends both and url-encodes values", () => { const result = withFlash("/admin/smtp", { success: "a b", error: "x&y" }); const params = new URL(result, "http://local").searchParams; expect(params.get("success")).toBe("a b"); expect(params.get("error")).toBe("x&y"); }); }); describe("readFlash", () => { it("reads success and error from resolved search params", () => { expect(readFlash({ success: "ok", error: "bad" })).toEqual({ success: "ok", error: "bad" }); }); it("returns undefined fields when params are missing", () => { expect(readFlash(undefined)).toEqual({ success: undefined, error: undefined }); expect(readFlash(null)).toEqual({ success: undefined, error: undefined }); expect(readFlash({})).toEqual({ success: undefined, error: undefined }); }); });