html-writer.tests.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. var assert = require("assert");
  2. var test = require("../test")(module);
  3. var htmlWriter = require("../../lib/writers/html-writer");
  4. test('can generate simple paragraph', function() {
  5. var writer = htmlWriter.writer();
  6. writer.open("p");
  7. writer.text("Hello");
  8. writer.close("p");
  9. return assert.equal(writer.asString(), "<p>Hello</p>");
  10. });
  11. test('can nest elements', function() {
  12. var writer = htmlWriter.writer();
  13. writer.open("ul");
  14. writer.open("li");
  15. writer.text("One");
  16. writer.close("li");
  17. writer.open("li");
  18. writer.text("Two");
  19. writer.close("li");
  20. writer.close("ul");
  21. return assert.equal(writer.asString(), "<ul><li>One</li><li>Two</li></ul>");
  22. });
  23. test('indents text if prettyPrint is true', function() {
  24. var writer = htmlWriter.writer({prettyPrint: true});
  25. writer.open("p");
  26. writer.text("One");
  27. writer.close("p");
  28. writer.open("p");
  29. writer.text("Two");
  30. writer.close("p");
  31. return assert.equal(writer.asString(), "<p>\n One\n</p>\n<p>\n Two\n</p>");
  32. });
  33. test('indents element if prettyPrint is true', function() {
  34. var writer = htmlWriter.writer({prettyPrint: true});
  35. writer.open("ul");
  36. writer.open("li");
  37. writer.text("One");
  38. writer.close("li");
  39. writer.open("li");
  40. writer.text("Two");
  41. writer.close("li");
  42. writer.close("ul");
  43. return assert.equal(writer.asString(), "<ul>\n <li>\n One\n </li>\n <li>\n Two\n </li>\n</ul>");
  44. });
  45. test('when prettyPrint is true inner elements do not have new lines', function() {
  46. var writer = htmlWriter.writer({prettyPrint: true});
  47. writer.open("p");
  48. writer.text("One");
  49. writer.open("em");
  50. writer.text("Two");
  51. writer.close("em");
  52. writer.close("p");
  53. return assert.equal(writer.asString(), "<p>\n One<em>Two</em>\n</p>");
  54. });
  55. test('indents closing element correctly when nested inside another indented element', function() {
  56. var writer = htmlWriter.writer({prettyPrint: true});
  57. writer.open("div");
  58. writer.open("div");
  59. writer.open("div");
  60. writer.text("Hello");
  61. writer.close("div");
  62. writer.close("div");
  63. writer.close("div");
  64. return assert.equal(writer.asString(), "<div>\n <div>\n <div>\n Hello\n </div>\n </div>\n</div>");
  65. });
  66. test('newlines in text are indented', function() {
  67. var writer = htmlWriter.writer({prettyPrint: true});
  68. writer.open("p");
  69. writer.text("One\nTwo");
  70. writer.close("p");
  71. return assert.equal(writer.asString(), "<p>\n One\n Two\n</p>");
  72. });
  73. test('run of text has only one new line', function() {
  74. var writer = htmlWriter.writer({prettyPrint: true});
  75. writer.open("p");
  76. writer.text("One");
  77. writer.text("Two");
  78. writer.close("p");
  79. return assert.equal(writer.asString(), "<p>\n OneTwo\n</p>");
  80. });
  81. test('run of html has only one new line', function() {
  82. var writer = htmlWriter.writer({prettyPrint: true});
  83. writer.open("p");
  84. writer.text("One");
  85. writer.text("Two");
  86. writer.close("p");
  87. return assert.equal(writer.asString(), "<p>\n OneTwo\n</p>");
  88. });
  89. test('self closing elements are indented', function() {
  90. var writer = htmlWriter.writer({prettyPrint: true});
  91. writer.open("p");
  92. writer.selfClosing("br");
  93. writer.close("p");
  94. return assert.equal(writer.asString(), "<p>\n <br />\n</p>");
  95. });
  96. test('newlines in appended HTML are indented', function() {
  97. var writer = htmlWriter.writer({prettyPrint: true});
  98. writer.open("p");
  99. writer.text("One\nTwo");
  100. writer.close("p");
  101. return assert.equal(writer.asString(), "<p>\n One\n Two\n</p>");
  102. });
  103. test('newlines in <pre> are not indented', function() {
  104. var writer = htmlWriter.writer({prettyPrint: true});
  105. writer.open("pre");
  106. writer.text("One\nTwo");
  107. writer.close("pre");
  108. return assert.equal(writer.asString(), "<pre>One\nTwo</pre>");
  109. });
  110. test('newlines in element in <pre> are not indented', function() {
  111. var writer = htmlWriter.writer({prettyPrint: true});
  112. writer.open("pre");
  113. writer.open("p");
  114. writer.text("One\nTwo");
  115. writer.close("p");
  116. writer.close("pre");
  117. return assert.equal(writer.asString(), "<pre><p>One\nTwo</p></pre>");
  118. });