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.
125 lines
3.3 KiB
125 lines
3.3 KiB
var assert = require("assert");
|
|
|
|
var _ = require("underscore");
|
|
|
|
var documents = require("../lib/documents");
|
|
var transforms = require("../lib/transforms");
|
|
var test = require("./test")(module);
|
|
|
|
|
|
test("paragraph()", {
|
|
"paragraph is transformed": function() {
|
|
var paragraph = documents.paragraph([]);
|
|
var result = transforms.paragraph(function() {
|
|
return documents.tab();
|
|
})(paragraph);
|
|
assert.deepEqual(result, documents.tab());
|
|
},
|
|
|
|
"non-paragraph elements are not transformed": function() {
|
|
var run = documents.run([]);
|
|
var result = transforms.paragraph(function() {
|
|
return documents.tab();
|
|
})(run);
|
|
assert.deepEqual(result, documents.run([]));
|
|
}
|
|
});
|
|
|
|
|
|
test("run()", {
|
|
"run is transformed": function() {
|
|
var run = documents.run([]);
|
|
var result = transforms.run(function() {
|
|
return documents.tab();
|
|
})(run);
|
|
assert.deepEqual(result, documents.tab());
|
|
},
|
|
|
|
"non-run elements are not transformed": function() {
|
|
var paragraph = documents.paragraph([]);
|
|
var result = transforms.run(function() {
|
|
return documents.tab();
|
|
})(paragraph);
|
|
assert.deepEqual(result, documents.paragraph([]));
|
|
}
|
|
});
|
|
|
|
|
|
test("elements()", {
|
|
"all descendants are transformed": function() {
|
|
var root = {
|
|
children: [
|
|
{
|
|
children: [
|
|
{}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
var currentCount = 0;
|
|
function setCount(node) {
|
|
currentCount++;
|
|
return _.extend(node, {count: currentCount});
|
|
}
|
|
|
|
var result = transforms._elements(setCount)(root);
|
|
|
|
assert.deepEqual(result, {
|
|
count: 3,
|
|
children: [
|
|
{
|
|
count: 2,
|
|
children: [
|
|
{count: 1}
|
|
]
|
|
}
|
|
]
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
test("getDescendants()", {
|
|
"returns nothing if element has no children property": function() {
|
|
assert.deepEqual(transforms.getDescendants({}), []);
|
|
},
|
|
|
|
"returns nothing if element has empty children": function() {
|
|
assert.deepEqual(transforms.getDescendants({children: []}), []);
|
|
},
|
|
|
|
"includes children": function() {
|
|
var element = {
|
|
children: [{name: "child 1"}, {name: "child 2"}]
|
|
};
|
|
assert.deepEqual(
|
|
transforms.getDescendants(element),
|
|
[{name: "child 1"}, {name: "child 2"}]
|
|
);
|
|
},
|
|
|
|
"includes indirect descendants": function() {
|
|
var grandchild = {name: "grandchild"};
|
|
var child = {name: "child", children: [grandchild]};
|
|
var element = {children: [child]};
|
|
assert.deepEqual(
|
|
transforms.getDescendants(element),
|
|
[grandchild, child]
|
|
);
|
|
}
|
|
});
|
|
|
|
|
|
test("getDescendantsOfType()", {
|
|
"filters descendants to type": function() {
|
|
var paragraph = {type: "paragraph"};
|
|
var run = {type: "run"};
|
|
var element = {
|
|
children: [paragraph, run]
|
|
};
|
|
assert.deepEqual(
|
|
transforms.getDescendantsOfType(element, "run"),
|
|
[run]
|
|
);
|
|
}
|
|
});
|
|
|