import assert from "node:assert/strict"; import { readFile } from "node:fs/promises"; import { resolve } from "node:path"; const source = await readFile(resolve("src/utils/longTextCard.js"), "utf8"); const moduleUrl = `data:text/javascript;base64,${Buffer.from(source).toString("base64")}`; const longTextCard = await import(moduleUrl); const { parseLongTextDisplayValue, sanitizeLongTextDisplayValue, hasLongTextDisplayValue, formatLongTextDisplayValue, } = longTextCard; assert.deepEqual( parseLongTextDisplayValue('[ "see bridge", "hear water" ]'), ["see bridge", "hear water"], "serialized arrays should be parsed for display" ); assert.deepEqual( parseLongTextDisplayValue('{"spot_name":"bridge","spot_longitude:":107.712345}'), { spot_name: "bridge", "spot_longitude:": 107.712345 }, "serialized objects should be parsed for display" ); assert.deepEqual( sanitizeLongTextDisplayValue( { content: "hidden", components: ["hidden"], view_section_items: '[ "check piers", "count arches" ]', nested: { title: "keep", }, }, ["content", "components"] ), { view_section_items: ["check piers", "count arches"], nested: { title: "keep", }, }, "sanitizing should parse JSON-like strings and ignore configured keys" ); assert.equal(hasLongTextDisplayValue('["follow up"]'), true); assert.equal(hasLongTextDisplayValue({ a: "", b: [" ", null] }), false); assert.equal(formatLongTextDisplayValue(true), "\u662f"); assert.equal(formatLongTextDisplayValue({ title: "bridge" }), '{"title":"bridge"}'); console.log("longTextCard display helpers passed");