aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-06-02 18:50:31 +0100
committerMichael Williamson <mike@zwobble.org>2025-06-02 18:50:31 +0100
commitee76b524a54ff235416458abb8b17bedcb478eb8 (patch)
treec639fa0f66fdbe78b4c76eb562cb42d751caa03e /test
parent3f5dd013a9259827aef9c63d8c33ed4aab88cdc6 (diff)
Handle SDTs representing checkboxes wrapped in other elements
Diffstat (limited to 'test')
-rw-r--r--test/docx/body-reader.tests.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/test/docx/body-reader.tests.js b/test/docx/body-reader.tests.js
index 8f36998..9413b2e 100644
--- a/test/docx/body-reader.tests.js
+++ b/test/docx/body-reader.tests.js
@@ -724,6 +724,91 @@ test("checkboxes", {
var result = readXmlElementValue(sdtXml);
assertThat(result, isCheckbox({checked: equalTo(true)}));
+ },
+
+ "when structured document tag checkbox has sdtContent then checkbox replaces single character": function() {
+ var tableXml = new XmlElement("w:tbl", {}, [
+ row(
+ xml.element("w:sdt", {}, [
+ xml.element("w:sdtPr", {}, [
+ xml.element("wordml:checkbox", {}, [
+ xml.element("wordml:checked", {"wordml:val": "1"})
+ ])
+ ]),
+ xml.element("w:sdtContent", {}, [
+ xml.element("w:tc", {}, [
+ xml.element("w:p", {}, [
+ xml.element("w:r", {}, [
+ xml.element("w:t", {}, [
+ xml.text("☐")
+ ])
+ ])
+ ])
+ ])
+ ])
+ ])
+ )
+ ]);
+
+ var result = readXmlElementValue(tableXml);
+
+ assert.deepEqual(result, new documents.Table([
+ new documents.TableRow([
+ new documents.TableCell([
+ new documents.Paragraph([
+ new documents.Run([
+ new documents.Checkbox({checked: true})
+ ])
+ ])
+ ])
+ ])
+ ]));
+ },
+
+ "when structured document tag checkbox has sdtContent then deleted content is ignored": function() {
+ var tableXml = new XmlElement("w:tbl", {}, [
+ row(
+ xml.element("w:sdt", {}, [
+ xml.element("w:sdtPr", {}, [
+ xml.element("wordml:checkbox", {}, [
+ xml.element("wordml:checked", {"wordml:val": "1"})
+ ])
+ ]),
+ xml.element("w:sdtContent", {}, [
+ xml.element("w:tc", {}, [
+ xml.element("w:p", {}, [
+ xml.element("w:r", {}, [
+ xml.element("w:t", {}, [
+ xml.text("☐")
+ ])
+ ]),
+ xml.element("w:del", {}, [
+ xml.element("w:r", {}, [
+ xml.element("w:t", {}, [
+ xml.text("☐")
+ ])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ])
+ )
+ ]);
+
+ var result = readXmlElementValue(tableXml);
+
+ assert.deepEqual(result, new documents.Table([
+ new documents.TableRow([
+ new documents.TableCell([
+ new documents.Paragraph([
+ new documents.Run([
+ new documents.Checkbox({checked: true})
+ ])
+ ])
+ ])
+ ])
+ ]));
}
});