From 4d4d9e669b389be294373cf3c9bd4727dd5f32af Mon Sep 17 00:00:00 2001 From: Andreas Lubbe Date: Fri, 23 Jan 2015 18:24:23 +0100 Subject: Add support for internal hyperlinks --- tests/document-to-html.tests.js | 34 ++++++++++++++++++++++++++++++++- tests/docx/document-xml-reader.tests.js | 22 ++++++++++++++------- 2 files changed, 48 insertions(+), 8 deletions(-) (limited to 'tests') diff --git a/tests/document-to-html.tests.js b/tests/document-to-html.tests.js index 3f50cbd..4863cf1 100644 --- a/tests/document-to-html.tests.js +++ b/tests/document-to-html.tests.js @@ -239,7 +239,18 @@ describe('DocumentConverter', function() { assert.equal(result.value, 'Hello.'); }); }); - + + test('docx hyperlink with anchor is converted to ', function() { + var hyperlink = new documents.Hyperlink( + [runOfText("Hello.")], + {anchor: "_Peter"} + ); + var converter = new DocumentConverter(); + return converter.convertToHtml(hyperlink).then(function(result) { + assert.equal(result.value, 'Hello.'); + }); + }); + test('docx tab is converted to tab in HTML', function() { var tab = new documents.Tab(); var converter = new DocumentConverter(); @@ -405,6 +416,27 @@ describe('DocumentConverter', function() { assert.equal(result.value.indexOf("

Hello.

"), 0); }); }); + + test('referenced bookmarks are coverted to anchors', function() { + var bookmarkStart = new documents.BookmarkStart({name: "_Peter"}); + var hyperlink = new documents.Hyperlink( + [runOfText("Hello.")], + {anchor: "_Peter"} + ); + var converter = new DocumentConverter(); + var document = new documents.Document([bookmarkStart, hyperlink]); + return converter.convertToHtml(document).then(function(result) { + assert.equal(result.value, 'Hello.'); + }); + }); + + test('unreferenced bookmarks are not converted', function() { + var bookmarkStart = new documents.BookmarkStart({name: "_Unreferenced"}); + var converter = new DocumentConverter(); + return converter.convertToHtml(bookmarkStart).then(function(result) { + assert.equal(result.value, ''); + }); + }); }); function paragraphOfText(text, styleId, styleName) { diff --git a/tests/docx/document-xml-reader.tests.js b/tests/docx/document-xml-reader.tests.js index 0b5a75f..35c806b 100644 --- a/tests/docx/document-xml-reader.tests.js +++ b/tests/docx/document-xml-reader.tests.js @@ -217,12 +217,12 @@ describe("readXmlElement: ", function() { }] ); }); - - test("w:bookmarkStart is ignored without warning", function() { - var ignoredElement = new XmlElement("w:bookmarkStart"); - var result = readXmlElement(ignoredElement); - assert.deepEqual(result.messages, []); - assert.deepEqual([], result.value); + + test("w:bookmarkStart is read as a bookmarkStart", function() { + var bookmarkStart = new XmlElement("w:bookmarkStart", {"w:name": "_Peter", "w:id": "42"}); + var result = readXmlElement(bookmarkStart); + assert.deepEqual(result.value.name, "_Peter"); + assert.deepEqual(result.value.type, "bookmarkStart"); }); test("can read inline pictures", function() { @@ -354,7 +354,15 @@ describe("readXmlElement: ", function() { assert.deepEqual(result.value.href, "http://example.com"); assert.deepEqual(result.value.children[0].type, "run"); }); - + + test("w:hyperlink is read as document hyperlink if it has an anchor", function() { + var runXml = new XmlElement("w:r", {}, []); + var hyperlinkXml = new XmlElement("w:hyperlink", {"w:anchor": "_Peter"}, [runXml]); + var result = readXmlElement(hyperlinkXml); + assert.deepEqual(result.value.anchor, "_Peter"); + assert.deepEqual(result.value.children[0].type, "run"); + }); + test("w:hyperlink is ignored if it does not have a relationship ID", function() { var runXml = new XmlElement("w:r", {}, []); var hyperlinkXml = new XmlElement("w:hyperlink", {}, [runXml]); -- cgit v1.2.3