1
Files
2025/tools/tests/publication.test.js

64 lines
2.0 KiB
JavaScript

const test = require("node:test");
const assert = require("node:assert/strict");
const {
parseBoolean,
isDraftValue,
isEffectivelyPublished,
isEffectivelyPublishedDocument,
} = require("../lib/publication");
test("parseBoolean converts common boolean representations", () => {
assert.equal(parseBoolean(true), true);
assert.equal(parseBoolean(false), false);
assert.equal(parseBoolean("true"), true);
assert.equal(parseBoolean("TRUE"), true);
assert.equal(parseBoolean("1"), true);
assert.equal(parseBoolean("on"), true);
assert.equal(parseBoolean("false"), false);
assert.equal(parseBoolean("0"), false);
assert.equal(parseBoolean("off"), false);
assert.equal(parseBoolean(""), null);
assert.equal(parseBoolean("unknown"), null);
assert.equal(parseBoolean(1), null);
});
test("isDraftValue returns true only for explicit draft values", () => {
assert.equal(isDraftValue(true), true);
assert.equal(isDraftValue("true"), true);
assert.equal(isDraftValue("yes"), true);
assert.equal(isDraftValue(false), false);
assert.equal(isDraftValue("false"), false);
assert.equal(isDraftValue(undefined), false);
});
test("isEffectivelyPublished excludes draft frontmatter", () => {
assert.equal(isEffectivelyPublished({ draft: true }), false);
assert.equal(isEffectivelyPublished({ draft: "true" }), false);
assert.equal(isEffectivelyPublished({ draft: false }), true);
assert.equal(isEffectivelyPublished({ title: "Article" }), true);
assert.equal(isEffectivelyPublished(null), true);
});
test("isEffectivelyPublishedDocument supports YAML-like get()", () => {
const docDraft = {
get(key) {
if (key === "draft") {
return true;
}
return null;
},
};
const docPublished = {
get(key) {
if (key === "draft") {
return false;
}
return null;
},
};
assert.equal(isEffectivelyPublishedDocument(docDraft), false);
assert.equal(isEffectivelyPublishedDocument(docPublished), true);
assert.equal(isEffectivelyPublishedDocument(null), true);
});