[Story] Contact page #6

Closed
bot-implementer wants to merge 6 commits from feature/5 into master
Showing only changes of commit 2f5c522cc3 - Show all commits
+33
View File
@@ -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");
});