You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

85 lines
2.2 KiB

const expect = require("chai").expect;
const CompileHTML = require("../lib/compileHTML");
describe("Compile AST to HTML String", function () {
it("Simple AST", function () {
const ast = [
{ type: "bold", children: ["my"] },
{ type: "text", children: ["simple"] },
{ type: "italics", children: ["AST"] },
];
const expectedOutput =
'<p><span class="bold">my</span><span class="text">simple</span><span class="italics">AST</span></p>';
expect(CompileHTML(ast)).to.eql(expectedOutput);
});
it("Nested AST", function () {
const ast = [
{
type: "bold",
children: [
"Bold",
{
type: "italics",
children: [
"Italics",
{
type: "strikethrough",
children: [
"strikethrough",
{ type: "underline", children: ["underline"] },
"strikethrough",
],
},
"Italics",
],
},
"Bold",
],
},
];
const expectedOutput =
'<p><span class="bold">Bold<span class="italics">Italics<span class="strikethrough">strikethrough<span class="underline">underline</span>strikethrough</span>Italics</span>Bold</span></p>';
expect(CompileHTML(ast)).to.eql(expectedOutput);
});
it("Link AST", function () {
const ast = [
{ type: "url", children: ["The Feathers"], url: "feathers.studio" },
];
const expectedOutput =
'<p><a href="feathers.studio" class="url">The Feathers</a></p>';
expect(CompileHTML(ast)).to.eql(expectedOutput);
});
it("Formatted Link AST - 1", function () {
const ast = [
{
type: "url",
children: [{ type: "bold", children: ["The Feathers"] }],
url: "feathers.studio",
},
];
const expectedOutput =
'<p><a href="feathers.studio" class="url"><span class="bold">The Feathers</span></a></p>';
expect(CompileHTML(ast)).to.eql(expectedOutput);
});
it("Formatted Link AST - 2", function () {
const ast = [
{
type: "url",
children: [
{
type: "bold",
children: ["The ", { type: "underline", children: ["Feathers"] }],
},
],
url: "feathers.studio",
},
];
const expectedOutput =
'<p><a href="feathers.studio" class="url"><span class="bold">The <span class="underline">Feathers</span></span></a></p>';
expect(CompileHTML(ast)).to.eql(expectedOutput);
});
});