var assert = require("assert"); var test = require("./testing").test; var htmlWriter = require("../lib/html-writer"); describe('html-writer', function() { test('can generate simple paragraph', function() { var writer = htmlWriter.writer(); writer.open("p"); writer.text("Hello"); writer.close("p"); return assert.equal(writer.asString(), "

Hello

"); }); test('can nest elements', function() { var writer = htmlWriter.writer(); writer.open("ul"); writer.open("li"); writer.text("One"); writer.close("li"); writer.open("li"); writer.text("Two"); writer.close("li"); writer.close("ul"); return assert.equal(writer.asString(), ""); }); test('indents text if prettyPrint is true', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("p"); writer.text("One"); writer.close("p"); writer.open("p"); writer.text("Two"); writer.close("p"); return assert.equal(writer.asString(), "

\n One\n

\n

\n Two\n

"); }); test('indents element if prettyPrint is true', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("ul"); writer.open("li"); writer.text("One"); writer.close("li"); writer.open("li"); writer.text("Two"); writer.close("li"); writer.close("ul"); return assert.equal(writer.asString(), ""); }); test('indents closing element correctly when nested inside another indented element', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("div"); writer.open("div"); writer.open("div"); writer.text("Hello"); writer.close("div"); writer.close("div"); writer.close("div"); return assert.equal(writer.asString(), "
\n
\n
\n Hello\n
\n
\n
"); }); test('newlines in text are indented', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("p"); writer.text("One\nTwo"); writer.close("p"); return assert.equal(writer.asString(), "

\n One\n Two\n

"); }); test('run of text has only one new line', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("p"); writer.text("One"); writer.text("Two"); writer.close("p"); return assert.equal(writer.asString(), "

\n OneTwo\n

"); }); test('run of html has only one new line', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("p"); writer.append("One"); writer.append("Two"); writer.close("p"); return assert.equal(writer.asString(), "

\n OneTwo\n

"); }); test('self closing elements are indented', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("p"); writer.selfClosing("br"); writer.close("p"); return assert.equal(writer.asString(), "

\n
\n

"); }); test('newlines in appended HTML are indented', function() { var writer = htmlWriter.writer({prettyPrint: true}); writer.open("p"); writer.append("One\nTwo"); writer.close("p"); return assert.equal(writer.asString(), "

\n One\n Two\n

"); }); })