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); });