From d9a34a0836a7e41a975017fb021f5af90d954ae5 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 23 Jan 2018 21:26:38 +0000 Subject: Find main document part using _rels/.rels --- .../mammoth/tests/docx/BodyXmlReaderMakers.java | 5 ++ .../mammoth/tests/docx/DocumentReaderTests.java | 60 ++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java (limited to 'src/test') diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlReaderMakers.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlReaderMakers.java index acbf95f..1a172ce 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlReaderMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlReaderMakers.java @@ -22,6 +22,11 @@ public class BodyXmlReaderMakers { throw new UnsupportedOperationException(); } + @Override + public boolean exists(String name) { + throw new UnsupportedOperationException(); + } + @Override public void close() throws IOException { } diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java new file mode 100644 index 0000000..d7f1a11 --- /dev/null +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentReaderTests.java @@ -0,0 +1,60 @@ +package org.zwobble.mammoth.tests.docx; + +import org.junit.jupiter.api.Test; +import org.zwobble.mammoth.internal.archives.InMemoryArchive; +import org.zwobble.mammoth.internal.documents.Document; +import org.zwobble.mammoth.internal.docx.DocumentReader; +import org.zwobble.mammoth.internal.results.InternalResult; +import org.zwobble.mammoth.internal.xml.NamespacePrefixes; +import org.zwobble.mammoth.internal.xml.XmlWriter; + +import java.util.Optional; + +import static org.hamcrest.MatcherAssert.assertThat; +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; +import static org.zwobble.mammoth.internal.xml.XmlNodes.text; +import static org.zwobble.mammoth.tests.ResultMatchers.isInternalSuccess; +import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.*; + +public class DocumentReaderTests { + private final NamespacePrefixes mainDocumentNamespaces = NamespacePrefixes.builder() + .put("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main") + .build(); + private final NamespacePrefixes relationshipsNamespaces = NamespacePrefixes.builder() + .defaultPrefix("http://schemas.openxmlformats.org/package/2006/relationships") + .build(); + + @Test + public void mainDocumentIsFoundUsingPackageRelationships() { + InternalResult result = DocumentReader.readDocument(Optional.empty(), InMemoryArchive.fromStrings(map( + "word/document2.xml", XmlWriter.toString( + element("w:document", list( + element("w:body", list( + element("w:p", list( + element("w:r", list( + element("w:t", list(text("Hello."))) + )) + )) + )) + )), + mainDocumentNamespaces + ), + "_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 + ) + ))); + + assertThat(result, isInternalSuccess(document( + withChildren(paragraphWithText("Hello.")) + ))); + } +} -- cgit v1.2.3