mammoth.js/tests/html/simplify.tests.js
2015-10-14 19:59:21 +01:00

82 lines
3.1 KiB
JavaScript

var assert = require("assert");
var test = require("../testing").test;
var html = require("../../lib/html");
var htmlPaths = require("../../lib/html-paths");
var nonFreshElement = html.nonFreshElement;
var fragment = html.fragment;
var text = html.text;
var pathToNode = html.pathToNode;
describe("simplify", function() {
test("empty text nodes are removed", function() {
assert.deepEqual(
html.simplify(fragment([text("")])),
fragment([]));
});
test("elements with no children are removed", function() {
assert.deepEqual(
html.simplify(fragment([nonFreshElement("p", {}, [])])),
fragment([]));
});
test("elements only containing empty nodes are removed", function() {
assert.deepEqual(
html.simplify(fragment([nonFreshElement("p", {}, [text("")])])),
fragment([]));
});
test("empty children of element are removed", function() {
assert.deepEqual(
html.simplify(fragment([nonFreshElement("p", {}, [text("Hello"), text("")])])),
fragment([nonFreshElement("p", {}, [text("Hello")])]));
});
test("successive fresh elements are not collapsed", function() {
var path = htmlPaths.elements([
htmlPaths.element("p", {}, {fresh: true})]);
var original = fragment([
pathToNode(path, [text("Hello")]),
pathToNode(path, [text(" there")])]);
assert.deepEqual(
html.simplify(original),
original);
});
test("successive plain non-fresh elements are collapsed if they have the same tag name", function() {
var path = htmlPaths.elements([
htmlPaths.element("p", {}, {fresh: false})]);
assert.deepEqual(
html.simplify(fragment([
pathToNode(path, [text("Hello")]),
pathToNode(path, [text(" there")])])),
fragment([
pathToNode(path, [text("Hello"), text(" there")])]));
});
test("non-fresh can collapse into preceding fresh element", function() {
var freshPath = htmlPaths.elements([
htmlPaths.element("p", {}, {fresh: true})]);
var nonFreshPath = htmlPaths.elements([
htmlPaths.element("p", {}, {fresh: false})]);
assert.deepEqual(
html.simplify(fragment([
pathToNode(freshPath, [text("Hello")]),
pathToNode(nonFreshPath, [text(" there")])])),
fragment([
pathToNode(freshPath, [text("Hello"), text(" there")])]));
});
test("children of collapsed element can collapse with children of another collapsed element", function() {
assert.deepEqual(
html.simplify(fragment([
nonFreshElement("blockquote", {}, [nonFreshElement("p", {}, [text("Hello")])]),
nonFreshElement("blockquote", {}, [nonFreshElement("p", {}, [text("there")])])])),
fragment([nonFreshElement("blockquote", {}, [nonFreshElement("p", {}, [text("Hello"), text("there")])])]));
});
});