diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-06-02 18:50:31 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-06-02 18:50:31 +0100 |
| commit | ee76b524a54ff235416458abb8b17bedcb478eb8 (patch) | |
| tree | c639fa0f66fdbe78b4c76eb562cb42d751caa03e /test | |
| parent | 3f5dd013a9259827aef9c63d8c33ed4aab88cdc6 (diff) | |
Handle SDTs representing checkboxes wrapped in other elements
Diffstat (limited to 'test')
| -rw-r--r-- | test/docx/body-reader.tests.js | 85 |
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}) + ]) + ]) + ]) + ]) + ])); } }); |
