summaryrefslogtreecommitdiff
path: root/test/docx/document-xml-reader.tests.js
blob: 419fd282a2265174b7f06236f7e679565373e3d3 (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
var assert = require("assert");

var documents = require("../../lib/documents");
var DocumentXmlReader = require("../../lib/docx/document-xml-reader").DocumentXmlReader;
var xml = require("../../lib/xml");
var test = require("../test")(module);
var createBodyReaderForTests = require("./testing").createBodyReaderForTests;

test("when body element is present then body is read", function() {
    var bodyReader = createBodyReaderForTests({});
    var documentXmlReader = new DocumentXmlReader({
        bodyReader: bodyReader
    });
    var textXml = xml.element("w:t", {}, [xml.text("Hello!")]);
    var runXml = xml.element("w:r", {}, [textXml]);
    var paragraphXml = xml.element("w:p", {}, [runXml]);
    var bodyXml = xml.element("w:body", {}, [paragraphXml]);
    var documentXml = xml.element("w:document", {}, [bodyXml]);

    var result = documentXmlReader.convertXmlToDocument(documentXml);

    assert.deepEqual(result.messages, []);
    assert.deepEqual(result.value, documents.document(
        [documents.paragraph([documents.run([documents.text("Hello!")])])],
        {}
    ));
});

test("when body element is not present then error is thrown", function() {
    var bodyReader = createBodyReaderForTests({});
    var documentXmlReader = new DocumentXmlReader({
        bodyReader: bodyReader
    });
    var paragraphXml = xml.element("w:p", {}, []);
    var bodyXml = xml.element("w:body2", {}, [paragraphXml]);
    var documentXml = xml.element("w:document", {}, [bodyXml]);

    assert.throws(function() {
        documentXmlReader.convertXmlToDocument(documentXml);
    }, /Could not find the body element: are you sure this is a docx file?/);
});