UNPKG

antora-confluence

Version:

A tool to convert and publish Antora documentation to Confluence

42 lines (41 loc) 2.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const globals_1 = require("@jest/globals"); const fs_1 = require("fs"); const node_html_parser_1 = __importDefault(require("node-html-parser")); const CodeBlockTransformer_1 = __importDefault(require("../../lib/transformer/CodeBlockTransformer")); const CdataTransformer_1 = __importDefault(require("../../lib/transformer/CdataTransformer")); (0, globals_1.describe)("CodeBlockTransformer", () => { (0, globals_1.it)("should transform code blocks", () => { const input = (0, fs_1.readFileSync)("test/section.html").toString("utf-8"); const html = (0, node_html_parser_1.default)(input, { blockTextElements: { code: true } }); const { content } = (0, CodeBlockTransformer_1.default)(html); const contentElement = content.querySelector(".content"); const macroElements = content.getElementsByTagName("ac:structured-macro"); const textElements = content.getElementsByTagName("ac:plain-text-body"); const parameterElements = content.getElementsByTagName("ac:parameter"); (0, globals_1.expect)(contentElement).not.toBeNull(); (0, globals_1.expect)(contentElement?.tagName.toLowerCase()).toStrictEqual("div"); (0, globals_1.expect)(macroElements.length).toStrictEqual(1); (0, globals_1.expect)(textElements.length).toStrictEqual(1); (0, globals_1.expect)(textElements[0].parentNode.tagName.toLowerCase()).toStrictEqual("ac:structured-macro"); (0, globals_1.expect)(parameterElements.length).toStrictEqual(1); (0, globals_1.expect)(parameterElements[0].textContent).toStrictEqual("bash"); }); (0, globals_1.it)("should transform code blocks but keep source code format", () => { const expected = `<div class="sect2"><h2 id="_business_context"><a class="anchor" href="#_business_context"></a>Business Context</h2><div class="sectionbody"><div class="listingblock"><div class="content"><ac:structured-macro ac:name="code"><ac:parameter ac:name="language">xml</ac:parameter><ac:plain-text-body><cdata-placeholder> < ?xml version="1.0" encoding="UTF-8"?> < Personne> < champ1> < champ2>something cool< /champ2> < /champ1> < /Personne></cdata-placeholder></ac:plain-text-body></ac:structured-macro></div></div></div></div>`; const input = (0, fs_1.readFileSync)("test/section_xml.html").toString("utf-8"); const html = (0, node_html_parser_1.default)(input, { blockTextElements: { code: true } }); const transformedContent = (0, CodeBlockTransformer_1.default)(html).content; const { content: convertedContent } = (0, CdataTransformer_1.default)(transformedContent); (0, globals_1.expect)(convertedContent.toString()).toStrictEqual(expected); }); });