123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 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]
- );
- }
- });
|