feat: migrate CozSweet legal documents
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
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}`,
|
||||
);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user