From 7fd0b913c41926a745331e26e779d6ee33e70ae0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 14 Jun 2015 12:57:55 +0100 Subject: Add basic support for text boxes --- tests/docx/document-xml-reader.tests.js | 47 +++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) (limited to 'tests/docx/document-xml-reader.tests.js') diff --git a/tests/docx/document-xml-reader.tests.js b/tests/docx/document-xml-reader.tests.js index dabe530..4e1da69 100644 --- a/tests/docx/document-xml-reader.tests.js +++ b/tests/docx/document-xml-reader.tests.js @@ -13,7 +13,12 @@ var test = testing.test; var createFakeDocxFile = testing.createFakeDocxFile; function readXmlElement(element, options) { - options = options || {}; + var styles = { + findParagraphStyleById: function(id) { + return {}; + } + }; + options = options || {styles: styles}; return new DocumentXmlReader(options).readXmlElement(element); } @@ -396,7 +401,37 @@ describe("readXmlElement: ", function() { assert.deepEqual(result.value, []); assert.deepEqual(result.messages, [warning("Unsupported break type: page")]); }); - + + test("text boxes have content appended after containing paragraph", function() { + var textbox = new XmlElement("w:pict", {}, [ + new XmlElement("v:shape", {}, [ + new XmlElement("v:textbox", {}, [ + new XmlElement("w:txbxContent", {}, [ + paragraphWithStyleId("textbox-content") + ]) + ]) + ]) + ]); + var paragraph = new XmlElement("w:p", {}, [ + new XmlElement("w:r", {}, [textbox]) + ]); + var result = readXmlElement(paragraph); + assert.deepEqual(result.value[1].styleId, "textbox-content"); + }); + + test("mc:Fallback is used when mc:AlternateContent is read", function() { + var styles = new Styles({"first": {name: "First"}, "second": {name: "Second"}}, {}); + var textbox = new XmlElement("mc:AlternateContent", {}, [ + new XmlElement("mc:Choice", {"Requires": "wps"}, [ + paragraphWithStyleId("first") + ]), + new XmlElement("mc:Fallback", {}, [ + paragraphWithStyleId("second") + ]) + ]); + var result = readXmlElement(textbox, {styles: styles}); + assert.deepEqual(result.value[0].styleId, "second"); + }); }); describe("convertXmlToDocument: ", function() { @@ -415,6 +450,14 @@ describe("convertXmlToDocument: ", function() { }); }); +function paragraphWithStyleId(styleId) { + return new XmlElement("w:p", {}, [ + new XmlElement("w:pPr", {}, [ + new XmlElement("w:pStyle", {"w:val": styleId}, []) + ]) + ]); +} + function runWithProperties(children) { return new XmlElement("w:r", {}, [createRunPropertiesXml(children)]); } -- cgit v1.2.3