Files
ai-creator-partnership/tests/legal-documents.test.mjs
T
2026-07-29 16:08:43 +08:00

122 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import test from "node:test";
const legalDocuments = [
{
path: "../public/privacy-policy.html",
title: "Privacy Policy - CozSweet",
marker: "PRIVACY POLICY",
},
{
path: "../public/data-deletion.html",
title: "Data Deletion CozSweet",
marker: "HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?",
},
{
path: "../public/membership-agreement.html",
title: "Membership Service Agreement - CozSweet",
marker: "MEMBERSHIP SERVICE AGREEMENT",
},
{
path: "../public/auto-renewal-agreement.html",
title: "Auto-Renewal Service Agreement - CozSweet",
marker: "AUTO-RENEWAL SERVICE AGREEMENT",
},
{
path: "../public/cozsweet/privacy-policy.html",
title: "Privacy Policy - CozSweet",
marker: "BUYER PROTECTION POLICY",
},
{
path: "../public/cozsweet/data-deletion.html",
title: "Data Deletion CozSweet",
marker: "HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?",
},
{
path: "../public/cozsweet/membership-agreement.html",
title: "Membership Service Agreement - CozSweet",
marker: "MEMBERSHIP SERVICE AGREEMENT",
},
{
path: "../public/cozsweet/auto-renewal-agreement.html",
title: "Auto-Renewal Service Agreement - CozSweet",
marker: "AUTO-RENEWAL SERVICE AGREEMENT",
},
];
for (const document of legalDocuments) {
test(`includes ${document.title}`, async () => {
const html = await readFile(new URL(document.path, import.meta.url), "utf8");
assert.match(html, new RegExp(`<title>${document.title}</title>`));
assert.ok(html.includes(document.marker));
assert.ok(html.length > 1_000);
});
}
test("keeps both privacy policy URLs byte-identical", async () => {
const rootPolicy = await readFile(
new URL("../public/privacy-policy.html", import.meta.url),
);
const cozsweetPolicy = await readFile(
new URL("../public/cozsweet/privacy-policy.html", import.meta.url),
);
assert.deepEqual(cozsweetPolicy, rootPolicy);
});
for (const documentName of [
"data-deletion",
"membership-agreement",
"auto-renewal-agreement",
]) {
test(`keeps both ${documentName} URLs byte-identical`, async () => {
const rootDocument = await readFile(
new URL(`../public/${documentName}.html`, import.meta.url),
);
const cozsweetDocument = await readFile(
new URL(`../public/cozsweet/${documentName}.html`, import.meta.url),
);
assert.deepEqual(cozsweetDocument, rootDocument);
});
}
test("exposes all legal documents from the site footer", async () => {
const source = await readFile(
new URL("../components/SiteShell.tsx", import.meta.url),
"utf8",
);
for (const href of [
"/cozsweet/privacy-policy.html",
"/cozsweet/data-deletion.html",
"/cozsweet/membership-agreement.html",
"/cozsweet/auto-renewal-agreement.html",
]) {
assert.ok(source.includes(`href="${href}"`), `Missing footer link: ${href}`);
}
});
test("redirects the legacy .html URLs through the worker", async () => {
const source = await readFile(
new URL("../worker/index.ts", import.meta.url),
"utf8",
);
for (const documentName of [
"privacy-policy",
"data-deletion",
"membership-agreement",
"auto-renewal-agreement",
]) {
assert.ok(
source.includes(
`"/cozsweet/${documentName}.html": "/${documentName}.html"`,
),
`Missing legacy redirect: ${documentName}`,
);
}
});