transforms.tests.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. var assert = require("assert");
  2. var _ = require("underscore");
  3. var documents = require("../lib/documents");
  4. var transforms = require("../lib/transforms");
  5. var test = require("./test")(module);
  6. test("paragraph()", {
  7. "paragraph is transformed": function() {
  8. var paragraph = documents.paragraph([]);
  9. var result = transforms.paragraph(function() {
  10. return documents.tab();
  11. })(paragraph);
  12. assert.deepEqual(result, documents.tab());
  13. },
  14. "non-paragraph elements are not transformed": function() {
  15. var run = documents.run([]);
  16. var result = transforms.paragraph(function() {
  17. return documents.tab();
  18. })(run);
  19. assert.deepEqual(result, documents.run([]));
  20. }
  21. });
  22. test("run()", {
  23. "run is transformed": function() {
  24. var run = documents.run([]);
  25. var result = transforms.run(function() {
  26. return documents.tab();
  27. })(run);
  28. assert.deepEqual(result, documents.tab());
  29. },
  30. "non-run elements are not transformed": function() {
  31. var paragraph = documents.paragraph([]);
  32. var result = transforms.run(function() {
  33. return documents.tab();
  34. })(paragraph);
  35. assert.deepEqual(result, documents.paragraph([]));
  36. }
  37. });
  38. test("elements()", {
  39. "all descendants are transformed": function() {
  40. var root = {
  41. children: [
  42. {
  43. children: [
  44. {}
  45. ]
  46. }
  47. ]
  48. };
  49. var currentCount = 0;
  50. function setCount(node) {
  51. currentCount++;
  52. return _.extend(node, {count: currentCount});
  53. }
  54. var result = transforms._elements(setCount)(root);
  55. assert.deepEqual(result, {
  56. count: 3,
  57. children: [
  58. {
  59. count: 2,
  60. children: [
  61. {count: 1}
  62. ]
  63. }
  64. ]
  65. });
  66. }
  67. });
  68. test("getDescendants()", {
  69. "returns nothing if element has no children property": function() {
  70. assert.deepEqual(transforms.getDescendants({}), []);
  71. },
  72. "returns nothing if element has empty children": function() {
  73. assert.deepEqual(transforms.getDescendants({children: []}), []);
  74. },
  75. "includes children": function() {
  76. var element = {
  77. children: [{name: "child 1"}, {name: "child 2"}]
  78. };
  79. assert.deepEqual(
  80. transforms.getDescendants(element),
  81. [{name: "child 1"}, {name: "child 2"}]
  82. );
  83. },
  84. "includes indirect descendants": function() {
  85. var grandchild = {name: "grandchild"};
  86. var child = {name: "child", children: [grandchild]};
  87. var element = {children: [child]};
  88. assert.deepEqual(
  89. transforms.getDescendants(element),
  90. [grandchild, child]
  91. );
  92. }
  93. });
  94. test("getDescendantsOfType()", {
  95. "filters descendants to type": function() {
  96. var paragraph = {type: "paragraph"};
  97. var run = {type: "run"};
  98. var element = {
  99. children: [paragraph, run]
  100. };
  101. assert.deepEqual(
  102. transforms.getDescendantsOfType(element, "run"),
  103. [run]
  104. );
  105. }
  106. });