diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-07-03 19:19:21 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-07-03 19:20:00 +0100 |
| commit | 0b56dfce42c3944cce47e284608e6806f4c839c3 (patch) | |
| tree | 5f96f9c2908f1c5b00a7192e71d4c192abd7cf47 /tests/mammoth.tests.js | |
| parent | 627c4a755395e313234bdb1914d168392006c483 (diff) | |
Move tests to test for easier Mocha usage
Diffstat (limited to 'tests/mammoth.tests.js')
| -rw-r--r-- | tests/mammoth.tests.js | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/tests/mammoth.tests.js b/tests/mammoth.tests.js deleted file mode 100644 index 1a82014..0000000 --- a/tests/mammoth.tests.js +++ /dev/null @@ -1,353 +0,0 @@ -var assert = require("assert"); -var path = require("path"); -var fs = require("fs"); -var _ = require("underscore"); - -var mammoth = require("../"); -var promises = require("../lib/promises"); -var results = require("../lib/results"); - -var testing = require("./testing"); -var test = testing.test; -var testData = testing.testData; -var createFakeDocxFile = testing.createFakeDocxFile; - - -describe('mammoth', function() { - test('should convert docx containing one paragraph to single p element', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, "<p>Walking on imported air</p>"); - assert.deepEqual(result.messages, []); - }); - }); - - test('should convert docx represented by a Buffer', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return promises.nfcall(fs.readFile, docxPath) - .then(function(buffer) { - return mammoth.convertToHtml({buffer: buffer}); - }) - .then(function(result) { - assert.equal(result.value, "<p>Walking on imported air</p>"); - assert.deepEqual(result.messages, []); - }); - }); - - test('should read docx xml files with unicode byte order mark', function() { - var docxPath = path.join(__dirname, "test-data/utf8-bom.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, "<p>This XML has a byte order mark.</p>"); - assert.deepEqual(result.messages, []); - }); - }); - - test('empty paragraphs are ignored by default', function() { - var docxPath = path.join(__dirname, "test-data/empty.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, ""); - assert.deepEqual(result.messages, []); - }); - }); - - test('empty paragraphs are preserved if ignoreEmptyParagraphs is false', function() { - var docxPath = path.join(__dirname, "test-data/empty.docx"); - return mammoth.convertToHtml({path: docxPath}, {ignoreEmptyParagraphs: false}).then(function(result) { - assert.equal(result.value, "<p></p>"); - assert.deepEqual(result.messages, []); - }); - }); - - test('style map can be expressed as string', function() { - var docxFile = createFakeDocxFile({ - "word/document.xml": testData("simple/word/document.xml") - }); - var options = { - styleMap: "p => h1" - }; - return mammoth.convertToHtml({file: docxFile}, options).then(function(result) { - assert.equal("<h1>Hello.</h1>", result.value); - }); - }); - - test('style map can be expressed as array of style mappings', function() { - var docxFile = createFakeDocxFile({ - "word/document.xml": testData("simple/word/document.xml") - }); - var options = { - styleMap: ["p => h1"] - }; - return mammoth.convertToHtml({file: docxFile}, options).then(function(result) { - assert.equal("<h1>Hello.</h1>", result.value); - }); - }); - - test('embedded style map is used if present', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return promises.nfcall(fs.readFile, docxPath) - .then(function(buffer) { - return mammoth.embedStyleMap({buffer: buffer}, "p => h1"); - }) - .then(function(docx) { - return mammoth.convertToHtml({buffer: docx.toBuffer()}); - }) - .then(function(result) { - assert.equal(result.value, "<h1>Walking on imported air</h1>"); - assert.deepEqual(result.messages, []); - }); - }); - - test('embedded style map can be retrieved', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return promises.nfcall(fs.readFile, docxPath) - .then(function(buffer) { - return mammoth.embedStyleMap({buffer: buffer}, "p => h1"); - }) - .then(function(docx) { - return mammoth.readEmbeddedStyleMap({buffer: docx.toBuffer()}); - }) - .then(function(styleMap) { - assert.equal(styleMap, "p => h1"); - }); - }); - - test('warning if style mapping is not understood', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - var options = { - styleMap: "!!!!\np => h1" - }; - return mammoth.convertToHtml({path: docxPath}, options).then(function(result) { - assert.equal("<h1>Walking on imported air</h1>", result.value); - var warning = "Did not understand this style mapping, so ignored it: !!!!\n" + - 'Error was at character number 1: Expected element type but got unrecognisedCharacter "!"'; - assert.deepEqual(result.messages, [results.warning(warning)]); - }); - }); - - test('options are passed to document converter when calling mammoth.convertToHtml', function() { - var docxFile = createFakeDocxFile({ - "word/document.xml": testData("simple/word/document.xml") - }); - var options = { - styleMap: "p => h1" - }; - return mammoth.convertToHtml({file: docxFile}, options).then(function(result) { - assert.equal("<h1>Hello.</h1>", result.value); - }); - }); - - test('options.transformDocument is used to transform document if set', function() { - var docxFile = createFakeDocxFile({ - "word/document.xml": testData("simple/word/document.xml") - }); - var options = { - transformDocument: function(document) { - document.children[0].styleId = "Heading1"; - return document; - } - }; - return mammoth.convertToHtml({file: docxFile}, options).then(function(result) { - assert.equal("<h1>Hello.</h1>", result.value); - }); - }); - - test('mammoth.transforms.paragraph only transforms paragraphs', function() { - var docxFile = createFakeDocxFile({ - "word/document.xml": testData("simple/word/document.xml") - }); - var options = { - transformDocument: mammoth.transforms.paragraph(function(paragraph) { - return _.extend(paragraph, {styleId: "Heading1"}); - }) - }; - return mammoth.convertToHtml({file: docxFile}, options).then(function(result) { - assert.equal("<h1>Hello.</h1>", result.value); - }); - }); - - test('inline images are included in output', function() { - var docxPath = path.join(__dirname, "test-data/tiny-picture.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, '<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOvgAADr4B6kKxwAAAABNJREFUKFNj/M+ADzDhlWUYqdIAQSwBE8U+X40AAAAASUVORK5CYII=" /></p>'); - }); - }); - - test('src of inline images can be changed', function() { - var docxPath = path.join(__dirname, "test-data/tiny-picture.docx"); - var convertImage = mammoth.images.imgElement(function(element) { - return element.read("base64").then(function(encodedImage) { - return {src: encodedImage.substring(0, 2) + "," + element.contentType}; - }); - }); - return mammoth.convertToHtml({path: docxPath}, {convertImage: convertImage}).then(function(result) { - assert.equal(result.value, '<p><img src="iV,image/png" /></p>'); - }); - }); - - test('images stored outside of document are included in output', function() { - var docxPath = path.join(__dirname, "test-data/external-picture.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, '<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOvgAADr4B6kKxwAAAABNJREFUKFNj/M+ADzDhlWUYqdIAQSwBE8U+X40AAAAASUVORK5CYII=" /></p>'); - assert.deepEqual(result.messages, []); - }); - }); - - test('warn if images stored outside of document are specified when passing file without path', function() { - var docxPath = path.join(__dirname, "test-data/external-picture.docx"); - var buffer = fs.readFileSync(docxPath); - return mammoth.convertToHtml({buffer: buffer}).then(function(result) { - assert.equal(result.value, ''); - assert.deepEqual(result.messages, [results.warning("could not find external image 'tiny-picture.png', path of input document is unknown")]); - }); - }); - - test('simple list is converted to list elements', function() { - var docxPath = path.join(__dirname, "test-data/simple-list.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, '<ul><li>Apple</li><li>Banana</li></ul>'); - }); - }); - - test('word tables are converted to html tables', function() { - var docxPath = path.join(__dirname, "test-data/tables.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - var expectedHtml = "<p>Above</p>" + - "<table>" + - "<tr><td><p>Top left</p></td><td><p>Top right</p></td></tr>" + - "<tr><td><p>Bottom left</p></td><td><p>Bottom right</p></td></tr>" + - "</table>" + - "<p>Below</p>"; - assert.equal(result.value, expectedHtml); - assert.deepEqual(result.messages, []); - }); - }); - - test('footnotes are appended to text', function() { - // TODO: don't duplicate footnotes with multiple references - var docxPath = path.join(__dirname, "test-data/footnotes.docx"); - var options = { - idPrefix: "doc-42-" - }; - return mammoth.convertToHtml({path: docxPath}, options).then(function(result) { - var expectedOutput = '<p>Ouch' + - '<sup><a href="#doc-42-footnote-1" id="doc-42-footnote-ref-1">[1]</a></sup>.' + - '<sup><a href="#doc-42-footnote-2" id="doc-42-footnote-ref-2">[2]</a></sup></p>' + - '<ol><li id="doc-42-footnote-1"><p> A tachyon walks into a bar. <a href="#doc-42-footnote-ref-1">↑</a></p></li>' + - '<li id="doc-42-footnote-2"><p> Fin. <a href="#doc-42-footnote-ref-2">↑</a></p></li></ol>'; - assert.equal(result.value, expectedOutput); - assert.deepEqual(result.messages, []); - }); - }); - - test('endnotes are appended to text', function() { - var docxPath = path.join(__dirname, "test-data/endnotes.docx"); - var options = { - idPrefix: "doc-42-" - }; - return mammoth.convertToHtml({path: docxPath}, options).then(function(result) { - var expectedOutput = '<p>Ouch' + - '<sup><a href="#doc-42-endnote-2" id="doc-42-endnote-ref-2">[1]</a></sup>.' + - '<sup><a href="#doc-42-endnote-3" id="doc-42-endnote-ref-3">[2]</a></sup></p>' + - '<ol><li id="doc-42-endnote-2"><p> A tachyon walks into a bar. <a href="#doc-42-endnote-ref-2">↑</a></p></li>' + - '<li id="doc-42-endnote-3"><p> Fin. <a href="#doc-42-endnote-ref-3">↑</a></p></li></ol>'; - assert.equal(result.value, expectedOutput); - assert.deepEqual(result.messages, []); - }); - }); - - test('relationships are handled properly in footnotes', function() { - var docxPath = path.join(__dirname, "test-data/footnote-hyperlink.docx"); - var options = { - idPrefix: "doc-42-" - }; - return mammoth.convertToHtml({path: docxPath}, options).then(function(result) { - var expectedOutput = - '<p><sup><a href="#doc-42-footnote-1" id="doc-42-footnote-ref-1">[1]</a></sup></p>' + - '<ol><li id="doc-42-footnote-1"><p> <a href="http://www.example.com">Example</a> <a href="#doc-42-footnote-ref-1">↑</a></p></li></ol>'; - assert.equal(result.value, expectedOutput); - assert.deepEqual(result.messages, []); - }); - }); - - test('textboxes are read', function() { - var docxPath = path.join(__dirname, "test-data/text-box.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - var expectedOutput = '<p>Datum plane</p>'; - assert.equal(result.value, expectedOutput); - }); - }); - - test('underline is ignored by default', function() { - var docxPath = path.join(__dirname, "test-data/underline.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, '<p><strong>The Sunset Tree</strong></p>'); - }); - }); - - test('underline can be configured with style mapping', function() { - var docxPath = path.join(__dirname, "test-data/underline.docx"); - return mammoth.convertToHtml({path: docxPath}, {styleMap: "u => em"}).then(function(result) { - assert.equal(result.value, '<p><strong>The <em>Sunset</em> Tree</strong></p>'); - }); - }); - - test('strikethrough is converted to <s> by default', function() { - var docxPath = path.join(__dirname, "test-data/strikethrough.docx"); - return mammoth.convertToHtml({path: docxPath}).then(function(result) { - assert.equal(result.value, "<p><s>Today's Special: Salmon</s> Sold out</p>"); - }); - }); - - test('strikethrough conversion can be configured with style mappings', function() { - var docxPath = path.join(__dirname, "test-data/strikethrough.docx"); - return mammoth.convertToHtml({path: docxPath}, {styleMap: "strike => del"}).then(function(result) { - assert.equal(result.value, "<p><del>Today's Special: Salmon</del> Sold out</p>"); - }); - }); - - test('indentation is used if prettyPrint is true', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return mammoth.convertToHtml({path: docxPath}, {prettyPrint: true}).then(function(result) { - assert.equal(result.value, "<p>\n Walking on imported air\n</p>"); - assert.deepEqual(result.messages, []); - }); - }); - - test('using styleMapping throws error', function() { - try { - mammoth.styleMapping(); - } catch (error) { - assert.equal( - error.message, - 'Use a raw string instead of mammoth.styleMapping e.g. "p[style-name=\'Title\'] => h1" instead of mammoth.styleMapping("p[style-name=\'Title\'] => h1")' - ); - } - }); - - test('can convert single paragraph to markdown', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return mammoth.convertToMarkdown({path: docxPath}).then(function(result) { - assert.equal(result.value, "Walking on imported air\n\n"); - assert.deepEqual(result.messages, []); - }); - }); - - test('extractRawText only retains raw text', function() { - var docxPath = path.join(__dirname, "test-data/simple-list.docx"); - return mammoth.extractRawText({path: docxPath}).then(function(result) { - assert.equal(result.value, 'Apple\n\nBanana\n\n'); - }); - }); - - test('extractRawText can use .docx files represented by a Buffer', function() { - var docxPath = path.join(__dirname, "test-data/single-paragraph.docx"); - return promises.nfcall(fs.readFile, docxPath) - .then(function(buffer) { - return mammoth.extractRawText({buffer: buffer}); - }) - .then(function(result) { - assert.equal(result.value, "Walking on imported air\n\n"); - assert.deepEqual(result.messages, []); - }); - }); -}); |
