aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndreas Lubbe <git@lubbe.org>2015-01-23 18:24:23 +0100
committerMichael Williamson <mike@zwobble.org>2015-02-09 20:31:51 +0000
commit4d4d9e669b389be294373cf3c9bd4727dd5f32af (patch)
treed66a47574dfea6c24328aa296cb3b67f2d7890f2 /tests
parent37cdbc47dc105a3c745e0f718843e68cf1741aed (diff)
Add support for internal hyperlinks
Diffstat (limited to 'tests')
-rw-r--r--tests/document-to-html.tests.js34
-rw-r--r--tests/docx/document-xml-reader.tests.js22
2 files changed, 48 insertions, 8 deletions
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, '<a href="http://www.example.com">Hello.</a>');
});
});
-
+
+ test('docx hyperlink with anchor is converted to <a>', 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, '<a href="#_Peter">Hello.</a>');
+ });
+ });
+
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("<p>Hello.</p>"), 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, '<span id="_Peter"></span><a href="#_Peter">Hello.</a>');
+ });
+ });
+
+ 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]);