summaryrefslogtreecommitdiff
path: root/tests/mammoth.tests.js
blob: 3a7eabbb63bd9762950ae926a4d3730e97720a57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var assert = require("assert");
var path = require("path");
var fs = require("fs");

var q = require("q");

var mammoth = require("../")
var htmlPaths = require("../lib/html-paths");

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 one paragraph to single p element', function() {
        var docxPath = path.join(__dirname, "test-data/single-paragraph.docx");
        var converter = new mammoth.Converter();
        return converter.convertToHtml({path: docxPath}).then(function(result) {
            assert.equal(result.value, "<p>Walking on imported air</p>");
            assert.deepEqual(result.messages, []);
        });
    });
    
    test('should convert Uint8Array containing one one paragraph to single p element', function() {
        var docxPath = path.join(__dirname, "test-data/single-paragraph.docx");
        
        return q.nfcall(fs.readFile, docxPath).then(function(buffer) {
            var array = new Uint8Array(buffer.length);
            for (var i = 0; i < buffer.length; i++) {
                array[i] = buffer[i];
            }
            var converter = new mammoth.Converter();
            return converter.convertToHtml({uint8Array: array}).then(function(result) {
                assert.equal("<p>Walking on imported air</p>", result.value);
            });
        });
    });
    
    test('options are passed to document converter when creating Converter', function() {
        var docxFile = createFakeDocxFile({
            "word/document.xml": testData("simple/word/document.xml")
        });
        var converter = new mammoth.Converter({
            defaultParagraphStyle: htmlPaths.topLevelElement("h1")
        });
        return converter.convertToHtml({file: docxFile}).then(function(result) {
            assert.equal("<h1>Hello.</h1>", result.value);
        });
    });
    
    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 = {
            defaultParagraphStyle: htmlPaths.topLevelElement("h1")
        };
        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 converter = new mammoth.Converter();
        var docxPath = path.join(__dirname, "test-data/tiny-picture.docx");
        return converter.convertToHtml({path: docxPath}).then(function(result) {
            assert.equal(result.value, '<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOvgAADr4B6kKxwAAAABNJREFUKFNj/M+ADzDhlWUYqdIAQSwBE8U+X40AAAAASUVORK5CYII=" /></p>');
        });
    });
    
    test('simple list is converted to list elements', function() {
        var converter = new mammoth.Converter();
        var docxPath = path.join(__dirname, "test-data/simple-list.docx");
        return converter.convertToHtml({path: docxPath}).then(function(result) {
            assert.equal(result.value, '<ul><li>Apple</li><li>Banana</li></ul>');
        });
    });
})