diff options
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java | 2 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java | 36 |
2 files changed, 37 insertions, 1 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 44f28fa..1e3b3e3 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java @@ -89,7 +89,7 @@ public class DocumentReader { } } - private static PartPaths findPartPaths(Archive archive) { + public static PartPaths findPartPaths(Archive archive) { Relationships packageRelationships = readPackageRelationships(archive); String documentFilename = findDocumentFilename(archive, packageRelationships); return new PartPaths(documentFilename); 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 cfcc4e9..ddccd9c 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java @@ -1,5 +1,6 @@ package org.zwobble.mammoth.tests.docx; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.zwobble.mammoth.internal.archives.Archive; import org.zwobble.mammoth.internal.archives.InMemoryArchive; @@ -82,4 +83,39 @@ public class DocumentReaderTests { ); assertThat(exception.getMessage(), equalTo("java.io.IOException: Could not find main document part. Are you sure this is a valid .docx file?")); } + + @Nested + public class PartPathTests { + @Test + public void mainDocumentPartIsFoundUsingPackageRelationships() { + InMemoryArchive archive = InMemoryArchive.fromStrings(map( + "word/document2.xml", " ", + "_rels/.rels", XmlWriter.toString( + element("Relationships", list( + element("Relationship", map( + "Id", "rId1", + "Target", "/word/document2.xml", + "Type", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" + )) + )), + relationshipsNamespaces + ) + )); + + DocumentReader.PartPaths partPaths = DocumentReader.findPartPaths(archive); + + assertThat(partPaths.getMainDocument(), equalTo("word/document2.xml")); + } + + @Test + public void whenRelationshipForMainDocumentCannotBeFoundThenFallbackIsUsed() { + InMemoryArchive archive = InMemoryArchive.fromStrings(map( + "word/document.xml", " " + )); + + DocumentReader.PartPaths partPaths = DocumentReader.findPartPaths(archive); + + assertThat(partPaths.getMainDocument(), equalTo("word/document.xml")); + } + } } |
