diff options
| author | Michael Williamson <mike@zwobble.org> | 2017-05-30 11:26:21 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2017-05-30 11:26:21 +0100 |
| commit | 275ff587231c8a74910a8f63595a7a23481d713f (patch) | |
| tree | 8aa109568981a23bfcccfadb7388a402f4203c9f /src/test | |
| parent | 33c342c9c5b102ec5cb171cdfd72ac3722631d15 (diff) | |
Read target frame on hyperlinks
Diffstat (limited to 'src/test')
4 files changed, 76 insertions, 6 deletions
diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java index 3c4af09..e3698a4 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -315,14 +315,20 @@ public class DocumentToHtmlTests { @Test public void hyperlinkWithHrefIsConvertedToAnchorTag() { assertThat( - convertToHtml(Hyperlink.href("http://example.com", list(new Text("Hello")))), + convertToHtml(hyperlink( + withHref("http://example.com"), + withChildren(new Text("Hello")) + )), deepEquals(list(Html.collapsibleElement("a", map("href", "http://example.com"), list(Html.text("Hello")))))); } @Test public void hyperlinkWithInternalAnchorReferenceIsConvertedToAnchorTag() { assertThat( - convertToHtml(Hyperlink.anchor("start", list(new Text("Hello")))), + convertToHtml(hyperlink( + withAnchor("start"), + withChildren(new Text("Hello")) + )), deepEquals(list(Html.collapsibleElement("a", map("href", "#doc-42-start"), list(Html.text("Hello")))))); } diff --git a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java index a3595ae..ea53458 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -25,6 +25,9 @@ public class DocumentElementMakers { private static final ArgumentKey<Integer> COLSPAN = new ArgumentKey<>("colspan"); private static final ArgumentKey<Integer> ROWSPAN = new ArgumentKey<>("rowspan"); private static final ArgumentKey<List<Comment>> COMMENTS = new ArgumentKey<>("comments"); + private static final ArgumentKey<Optional<String>> HREF = new ArgumentKey<>("href"); + private static final ArgumentKey<Optional<String>> ANCHOR = new ArgumentKey<>("anchor"); + private static final ArgumentKey<Optional<String>> TARGET_FRAME = new ArgumentKey<>("targetFrame"); public static Argument<Optional<Style>> withStyle(Style style) { return arg(STYLE, Optional.of(style)); @@ -130,4 +133,26 @@ public class DocumentElementMakers { public static Comment comment(String commentId, List<DocumentElement> body) { return new Comment(commentId, body, Optional.empty(), Optional.empty()); } + + public static Hyperlink hyperlink(Object... args) { + Arguments arguments = new Arguments(args); + return new Hyperlink( + arguments.get(HREF, Optional.empty()), + arguments.get(ANCHOR, Optional.empty()), + arguments.get(TARGET_FRAME, Optional.empty()), + arguments.get(CHILDREN, list()) + ); + } + + public static Argument<Optional<String>> withHref(String href) { + return arg(HREF, Optional.of(href)); + } + + public static Argument<Optional<String>> withAnchor(String anchor) { + return arg(ANCHOR, Optional.of(anchor)); + } + + public static Argument<Optional<String>> withTargetFrame(String targetFrame) { + return arg(TARGET_FRAME, Optional.of(targetFrame)); + } } diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java index e363983..1ba96d1 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -755,7 +755,12 @@ public class BodyXmlTests { XmlElement element = element("w:hyperlink", map("r:id", "r42"), list(runXml(list()))); assertThat( readSuccess(bodyReader(relationships), element), - deepEquals(Hyperlink.href("http://example.com", list(run(withChildren()))))); + isHyperlink( + hasHref("http://example.com"), + hasBlankAnchor(), + hasChildren(isRun(hasChildren())) + ) + ); } @Test @@ -766,7 +771,8 @@ public class BodyXmlTests { XmlElement element = element("w:hyperlink", map("r:id", "r42", "w:anchor", "fragment"), list(runXml(list()))); assertThat( readSuccess(bodyReader(relationships), element), - deepEquals(Hyperlink.href("http://example.com/#fragment", list(run(withChildren()))))); + isHyperlink(hasHref("http://example.com/#fragment")) + ); } @Test @@ -777,7 +783,8 @@ public class BodyXmlTests { XmlElement element = element("w:hyperlink", map("r:id", "r42", "w:anchor", "fragment"), list(runXml(list()))); assertThat( readSuccess(bodyReader(relationships), element), - deepEquals(Hyperlink.href("http://example.com/#fragment", list(run(withChildren()))))); + isHyperlink(hasHref("http://example.com/#fragment")) + ); } @Test @@ -785,7 +792,11 @@ public class BodyXmlTests { XmlElement element = element("w:hyperlink", map("w:anchor", "start"), list(runXml(list()))); assertThat( readSuccess(bodyReader(), element), - deepEquals(Hyperlink.anchor("start", list(run(withChildren()))))); + isHyperlink( + hasAnchor("start"), + hasBlankHref() + ) + ); } @Test @@ -797,6 +808,18 @@ public class BodyXmlTests { } @Test + public void hyperlinkTargetFrameIsRead() { + XmlElement element = element("w:hyperlink", map( + "w:anchor", "start", + "w:tgtFrame", "_blank" + )); + assertThat( + readSuccess(bodyReader(), element), + isHyperlink(hasTargetFrame("_blank")) + ); + } + + @Test public void goBackBookmarkIsIgnored() { XmlElement element = element("w:bookmarkStart", map("w:name", "_GoBack")); assertThat( diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java index 8ecb902..d0a1fe6 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java @@ -90,4 +90,20 @@ public class DocumentMatchers { static Matcher<Hyperlink> hasHref(String href) { return hasProperty("href", equalTo(Optional.of(href))); } + + static Matcher<Hyperlink> hasBlankHref() { + return hasProperty("href", equalTo(Optional.empty())); + } + + static Matcher<Hyperlink> hasAnchor(String anchor) { + return hasProperty("anchor", equalTo(Optional.of(anchor))); + } + + static Matcher<Hyperlink> hasBlankAnchor() { + return hasProperty("anchor", equalTo(Optional.empty())); + } + + static Matcher<Hyperlink> hasTargetFrame(String targetFrame) { + return hasProperty("targetFrame", equalTo(Optional.of(targetFrame))); + } } |
