aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java27
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java33
2 files changed, 47 insertions, 13 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java
index 6176aec..a616aac 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java
@@ -61,10 +61,18 @@ public class DocumentReader {
public static class PartPaths {
private final String mainDocument;
private final String comments;
+ private final String endnotes;
+ private final String footnotes;
+ private final String numbering;
+ private final String styles;
- public PartPaths(String mainDocument, String comments) {
+ public PartPaths(String mainDocument, String comments, String endnotes, String footnotes, String numbering, String styles) {
this.mainDocument = mainDocument;
this.comments = comments;
+ this.endnotes = endnotes;
+ this.footnotes = footnotes;
+ this.numbering = numbering;
+ this.styles = styles;
}
public String getMainDocument() {
@@ -76,19 +84,19 @@ public class DocumentReader {
}
public String getEndnotes() {
- return "word/endnotes.xml";
+ return endnotes;
}
public String getFootnotes() {
- return "word/footnotes.xml";
+ return footnotes;
}
public String getNumbering() {
- return "word/numbering.xml";
+ return numbering;
}
public String getStyles() {
- return "word/styles.xml";
+ return styles;
}
}
@@ -109,7 +117,14 @@ public class DocumentReader {
"word/" + name + ".xml"
);
- return new PartPaths(documentFilename, find.apply("comments"));
+ return new PartPaths(
+ documentFilename,
+ find.apply("comments"),
+ find.apply("endnotes"),
+ find.apply("footnotes"),
+ find.apply("numbering"),
+ find.apply("styles")
+ );
}
private static Relationships readPackageRelationships(Archive archive) {
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java
index bce431a..1c07679 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java
@@ -1,7 +1,9 @@
package org.zwobble.mammoth.tests.docx;
+import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestFactory;
import org.zwobble.mammoth.internal.archives.Archive;
import org.zwobble.mammoth.internal.archives.InMemoryArchive;
import org.zwobble.mammoth.internal.documents.Document;
@@ -11,10 +13,13 @@ import org.zwobble.mammoth.internal.util.PassThroughException;
import org.zwobble.mammoth.internal.xml.NamespacePrefixes;
import org.zwobble.mammoth.internal.xml.XmlWriter;
+import java.util.List;
import java.util.Optional;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasProperty;
+import static org.zwobble.mammoth.internal.util.Lists.eagerFlatMap;
import static org.zwobble.mammoth.internal.util.Lists.list;
import static org.zwobble.mammoth.internal.util.Maps.map;
import static org.zwobble.mammoth.internal.xml.XmlNodes.element;
@@ -115,8 +120,23 @@ public class DocumentReaderTests {
DocumentReader.PartPaths partPaths = DocumentReader.findPartPaths(archive);
assertThat(partPaths.getMainDocument(), equalTo("word/document.xml"));
}
- @Test
- public void commentsPartIsFoundUsingMainDocumentRelationships() {
+
+ @TestFactory
+ public List<DynamicTest> partsRelatedToMainDocument() {
+ return eagerFlatMap(
+ list("comments", "endnotes", "footnotes", "numbering", "styles"),
+ name -> list(
+ DynamicTest.dynamicTest(name + " part is found using main document relationships", () -> {
+ partIsFoundUsingMainDocumentRelationships(name);
+ }),
+ DynamicTest.dynamicTest(name + " part is found using main document relationships", () -> {
+ whenRelationshipForPartCannotBeFoundThenFallbackIsUsed(name);
+ })
+ )
+ );
+ }
+
+ private void partIsFoundUsingMainDocumentRelationships(String name) {
InMemoryArchive archive = InMemoryArchive.fromStrings(map(
"_rels/.rels", XmlWriter.toString(
element("Relationships", list(
@@ -134,7 +154,7 @@ public class DocumentReaderTests {
element("Relationship", map(
"Id", "rId2",
"Target", "target-path.xml",
- "Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"
+ "Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/" + name
))
)),
relationshipsNamespaces
@@ -143,11 +163,10 @@ public class DocumentReaderTests {
));
DocumentReader.PartPaths partPaths = DocumentReader.findPartPaths(archive);
- assertThat(partPaths.getComments(), equalTo("word/target-path.xml"));
+ assertThat(partPaths, hasProperty(name, equalTo("word/target-path.xml")));
}
- @Test
- public void whenRelationshipsForCommentsCannotBeFoundThenFallbackIsUsed() {
+ private void whenRelationshipForPartCannotBeFoundThenFallbackIsUsed(String name) {
InMemoryArchive archive = InMemoryArchive.fromStrings(map(
"word/document.xml", " ",
"_rels/.rels", XmlWriter.toString(
@@ -163,7 +182,7 @@ public class DocumentReaderTests {
));
DocumentReader.PartPaths partPaths = DocumentReader.findPartPaths(archive);
- assertThat(partPaths.getComments(), equalTo("word/comments.xml"));
+ assertThat(partPaths, hasProperty(name, equalTo("word/" + name + ".xml")));
}
}
}