From 0caa67864e1ece83b516a3d29bd560df7599896e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 20 May 2023 20:47:25 +0100 Subject: Support merged paragraphs when revisions are tracked --- .../zwobble/mammoth/tests/docx/BodyXmlTests.java | 56 ++++++++++++++++++++++ .../mammoth/tests/docx/DocumentMatchers.java | 4 ++ 2 files changed, 60 insertions(+) (limited to 'src/test/java/org/zwobble') 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 1898897..c8b6c7c 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -264,6 +264,62 @@ public class BodyXmlTests { hasNumbering(Optional.empty())); } + @Test + public void contentOfDeletedParagraphIsPreprendedToNextParagraph() { + Style heading1 = new Style("Heading1", Optional.of("Heading 1")); + Style heading2 = new Style("Heading2", Optional.of("Heading 2")); + Styles styles = new Styles( + map( + "Heading1", heading1, + "Heading2", heading2 + ), + map(), + map(), + map() + ); + List bodyXml = list( + element("w:p", list( + element("w:pPr", list( + element("w:pStyle", map("w:val", "Heading1")), + element("w:rPr", list( + element("w:del") + )) + )), + runXml("One") + )), + element("w:p", list( + element("w:pPr", list( + element("w:pStyle", map("w:val", "Heading2")) + )), + runXml("Two") + )), + // Include a second paragraph that isn't deleted to ensure we only add + // the deleted paragraph contents once. + element("w:p", list( + runXml("Three") + )) + ); + + BodyXmlReader reader = bodyReader(styles); + InternalResult> result = reader.readElements(bodyXml).toResult(); + + assertThat(result.getWarnings(), emptyIterable()); + assertThat(result.getValue(), contains( + isParagraph( + hasParagraphStyle(equalTo(Optional.of(heading2))), + hasChildren( + isRun(run(withChildren(text("One")))), + isRun(run(withChildren(text("Two")))) + ) + ), + isParagraph( + hasChildren( + isRun(run(withChildren(text("Three")))) + ) + ) + )); + } + @Nested public class ComplexFieldsTests { private final String URI = "http://example.com"; 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 53632c1..4f3628e 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java @@ -37,6 +37,10 @@ public class DocumentMatchers { return cast(Paragraph.class, allOf(matchers)); } + static Matcher hasParagraphStyle(Matcher> style) { + return hasProperty("style", style); + } + static Matcher isEmptyRun() { return isRun(hasChildren()); } -- cgit v1.2.3