antora-confluence
Version:
A tool to convert and publish Antora documentation to Confluence
42 lines (41 loc) • 2.93 kB
JavaScript
"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);
});
});