@plone/scripts
Version:
Volto Core scripts package - Contains scripts and dependencies for these scripts for tooling when developing Plone 6 / Volto
44 lines (37 loc) • 1.54 kB
JavaScript
const { escapeDoubleQuotes } = require("./i18n.cjs");
/**
* Simple test runner for i18n script functions
*/
function runTests() {
const testCases = [
{ name: "No quotes", input: "simple text", expected: "simple text" },
{ name: "Single quotes (ignored)", input: "it's a test", expected: "it's a test" },
{ name: "Unescaped double quotes", input: 'with "quote"', expected: 'with \\"quote\\"' },
{ name: "Already escaped double quotes", input: 'with \\"escaped quote\\"', expected: 'with \\"escaped quote\\"' },
{ name: "Mixed quotes", input: 'mixed "un-escaped" and \\"escaped\\"', expected: 'mixed \\"un-escaped\\" and \\"escaped\\"' },
{ name: "Empty string", input: "", expected: "" },
{ name: "Literal backslash before quote", input: 'back\\\\\\"quote', expected: 'back\\\\\\"quote' },
];
let failures = 0;
console.log("Running i18n script tests...");
testCases.forEach((tc) => {
const result = escapeDoubleQuotes(tc.input);
if (result === tc.expected) {
console.log(`✅ PASSED: ${tc.name}`);
} else {
failures++;
console.error(`❌ FAILED: ${tc.name}`);
console.error(` Input: ${JSON.stringify(tc.input)}`);
console.error(` Expected: ${JSON.stringify(tc.expected)}`);
console.error(` Result: ${JSON.stringify(result)}`);
}
});
if (failures === 0) {
console.log("\nAll tests passed successfully!");
process.exit(0);
} else {
console.error(`\n${failures} test(s) failed.`);
process.exit(1);
}
}
runTests();