From 6fdee5a4b57832682e1c43156b2e075a5552f595 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 1 Apr 2013 15:24:41 +0100 Subject: Move document conversion into document-to-html module --- tests/document-to-html.tests.js | 146 ++++++++++++++++++++++++++++++++++++++++ tests/documents.tests.js | 146 ---------------------------------------- 2 files changed, 146 insertions(+), 146 deletions(-) create mode 100644 tests/document-to-html.tests.js delete mode 100644 tests/documents.tests.js (limited to 'tests') diff --git a/tests/document-to-html.tests.js b/tests/document-to-html.tests.js new file mode 100644 index 0000000..a53039b --- /dev/null +++ b/tests/document-to-html.tests.js @@ -0,0 +1,146 @@ +var assert = require("assert"); + +var documents = require("../lib/documents"); +var DocumentConverter = require("../lib/document-to-html").DocumentConverter; +var test = require("./testing").test; +var styles = require("../lib/styles"); + + +describe('DocumentConverter', function() { + test('should convert document containing one paragraph to single p element', function() { + var document = new documents.Document([ + paragraphOfText("Hello.") + ]); + var converter = new DocumentConverter(); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, "

Hello.

"); + }); + }); + + test('ignores empty paragraphs', function() { + var document = new documents.Document([ + paragraphOfText("") + ]); + var converter = new DocumentConverter(); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, ""); + }); + }); + + test('can use non-default HTML element for unstyled paragraphs', function() { + var document = new documents.Document([ + paragraphOfText("Hello.") + ]); + var converter = new DocumentConverter({defaultParagraphStyle: styles.topLevelElement("h1")}); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, "

Hello.

"); + }); + }); + + test('text is HTML-escaped', function() { + var document = new documents.Document([ + paragraphOfText("1 < 2") + ]); + var converter = new DocumentConverter(); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, "

1 < 2

"); + }); + }); + + test('should convert document containing multiple paragraphs to multiple p elements', function() { + var document = new documents.Document([ + paragraphOfText("Hello."), + paragraphOfText("Goodbye.") + ]); + var converter = new DocumentConverter(); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, "

Hello.

Goodbye.

"); + }); + }); + + test('uses style mappings to pick HTML element for docx paragraph', function() { + var document = new documents.Document([ + paragraphOfText("Hello.", "Heading1"), + ]); + var converter = new DocumentConverter({ + paragraphStyleMap: { + "Heading1": styles.topLevelElement("h1") + } + }); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, "

Hello.

"); + }); + }); + + test('can use stacked styles to generate nested HTML elements', function() { + var document = new documents.Document([ + paragraphOfText("Hello.", "Heading1") + ]); + var converter = new DocumentConverter({ + paragraphStyleMap: { + "Heading1": styles.elements(["h1", "span"]) + } + }); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.html, "

Hello.

"); + }); + }); + + test('bold runs are wrapped in tags', function() { + var run = runOfText("Hello.", {isBold: true}); + var converter = new DocumentConverter(); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.html, "Hello."); + }); + }); + + test('bold runs can exist inside other tags', function() { + var run = new documents.Paragraph([ + runOfText("Hello.", {isBold: true}) + ]); + var converter = new DocumentConverter(); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.html, "

Hello.

"); + }); + }); + + test('italic runs are wrapped in tags', function() { + var run = runOfText("Hello.", {isItalic: true}); + var converter = new DocumentConverter(); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.html, "Hello."); + }); + }); + + test('run can be both bold and italic', function() { + var run = runOfText("Hello.", {isBold: true, isItalic: true}); + var converter = new DocumentConverter(); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.html, "Hello."); + }); + }); + + test('run styles are converted to HTML if mapping exists', function() { + var run = runOfText("Hello.", {styleName: "Emphasis"}); + var converter = new DocumentConverter({ + runStyleMap: { + "Emphasis": styles.elements(["strong"]) + } + }); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.html, "Hello."); + }); + }); +}); + +function paragraphOfText(text, styleName) { + var run = runOfText(text); + return new documents.Paragraph([run], { + styleName: styleName + }); +} + +function runOfText(text, properties) { + var textElement = new documents.Text(text); + return new documents.Run([textElement], properties); +} diff --git a/tests/documents.tests.js b/tests/documents.tests.js deleted file mode 100644 index d08500d..0000000 --- a/tests/documents.tests.js +++ /dev/null @@ -1,146 +0,0 @@ -var assert = require("assert"); - -var documents = require("../lib/documents"); -var DocumentConverter = documents.DocumentConverter; -var test = require("./testing").test; -var styles = require("../lib/styles"); - - -describe('DocumentConverter', function() { - test('should convert document containing one paragraph to single p element', function() { - var document = new documents.Document([ - paragraphOfText("Hello.") - ]); - var converter = new DocumentConverter(); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, "

Hello.

"); - }); - }); - - test('ignores empty paragraphs', function() { - var document = new documents.Document([ - paragraphOfText("") - ]); - var converter = new DocumentConverter(); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, ""); - }); - }); - - test('can use non-default HTML element for unstyled paragraphs', function() { - var document = new documents.Document([ - paragraphOfText("Hello.") - ]); - var converter = new DocumentConverter({defaultParagraphStyle: styles.topLevelElement("h1")}); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, "

Hello.

"); - }); - }); - - test('text is HTML-escaped', function() { - var document = new documents.Document([ - paragraphOfText("1 < 2") - ]); - var converter = new DocumentConverter(); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, "

1 < 2

"); - }); - }); - - test('should convert document containing multiple paragraphs to multiple p elements', function() { - var document = new documents.Document([ - paragraphOfText("Hello."), - paragraphOfText("Goodbye.") - ]); - var converter = new DocumentConverter(); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, "

Hello.

Goodbye.

"); - }); - }); - - test('uses style mappings to pick HTML element for docx paragraph', function() { - var document = new documents.Document([ - paragraphOfText("Hello.", "Heading1"), - ]); - var converter = new DocumentConverter({ - paragraphStyleMap: { - "Heading1": styles.topLevelElement("h1") - } - }); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, "

Hello.

"); - }); - }); - - test('can use stacked styles to generate nested HTML elements', function() { - var document = new documents.Document([ - paragraphOfText("Hello.", "Heading1") - ]); - var converter = new DocumentConverter({ - paragraphStyleMap: { - "Heading1": styles.elements(["h1", "span"]) - } - }); - return converter.convertToHtml(document).then(function(result) { - assert.equal(result.html, "

Hello.

"); - }); - }); - - test('bold runs are wrapped in tags', function() { - var run = runOfText("Hello.", {isBold: true}); - var converter = new DocumentConverter(); - return converter.convertToHtml(run).then(function(result) { - assert.equal(result.html, "Hello."); - }); - }); - - test('bold runs can exist inside other tags', function() { - var run = new documents.Paragraph([ - runOfText("Hello.", {isBold: true}) - ]); - var converter = new DocumentConverter(); - return converter.convertToHtml(run).then(function(result) { - assert.equal(result.html, "

Hello.

"); - }); - }); - - test('italic runs are wrapped in tags', function() { - var run = runOfText("Hello.", {isItalic: true}); - var converter = new DocumentConverter(); - return converter.convertToHtml(run).then(function(result) { - assert.equal(result.html, "Hello."); - }); - }); - - test('run can be both bold and italic', function() { - var run = runOfText("Hello.", {isBold: true, isItalic: true}); - var converter = new DocumentConverter(); - return converter.convertToHtml(run).then(function(result) { - assert.equal(result.html, "Hello."); - }); - }); - - test('run styles are converted to HTML if mapping exists', function() { - var run = runOfText("Hello.", {styleName: "Emphasis"}); - var converter = new DocumentConverter({ - runStyleMap: { - "Emphasis": styles.elements(["strong"]) - } - }); - return converter.convertToHtml(run).then(function(result) { - assert.equal(result.html, "Hello."); - }); - }); -}); - -function paragraphOfText(text, styleName) { - var run = runOfText(text); - return new documents.Paragraph([run], { - styleName: styleName - }); -} - -function runOfText(text, properties) { - var textElement = new documents.Text(text); - return new documents.Run([textElement], properties); -} -- cgit v1.2.3