test: unit tests for the mailto URL builder
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
import test from "node:test";
|
||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { buildMailtoUrl } from "../js/mailto.js";
|
||||||
|
|
||||||
|
test("builds a plain mailto URL when there is no subject or body", () => {
|
||||||
|
assert.equal(buildMailtoUrl({ to: "ada@example.com" }), "mailto:ada@example.com");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("includes subject and body as URL-encoded query parameters", () => {
|
||||||
|
const url = buildMailtoUrl({
|
||||||
|
to: "owner@example.com",
|
||||||
|
subject: "Hello, Ada!",
|
||||||
|
body: "Line one\nLine two & <more>",
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.ok(url.startsWith("mailto:owner@example.com?"));
|
||||||
|
|
||||||
|
const params = new URL(url).searchParams;
|
||||||
|
assert.equal(params.get("subject"), "Hello, Ada!");
|
||||||
|
assert.equal(params.get("body"), "Line one\nLine two & <more>");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("omits empty subject and body", () => {
|
||||||
|
const url = buildMailtoUrl({ to: "owner@example.com", subject: "", body: "" });
|
||||||
|
assert.equal(url, "mailto:owner@example.com");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("encodes spaces and special characters so the mail client opens pre-filled", () => {
|
||||||
|
const url = buildMailtoUrl({ to: "o@example.com", subject: "a b", body: "x&y=z" });
|
||||||
|
const params = new URL(url).searchParams;
|
||||||
|
assert.equal(params.get("subject"), "a b");
|
||||||
|
assert.equal(params.get("body"), "x&y=z");
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user