64 lines
2.0 KiB
JavaScript
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);
|
|
});
|