aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-09-11 15:07:41 +0100
committerMichael Williamson <mike@zwobble.org>2025-09-11 15:07:41 +0100
commitcee62eea4e52484a473128f342e2a497e32261b7 (patch)
treec2d38753571a59f38c337edaac76d185a7e3601d /test
parent660da135c950031097269f5d610e771698f99eb3 (diff)
Handle numbering levels defined without an index
Diffstat (limited to 'test')
-rw-r--r--test/docx/body-reader.tests.js6
-rw-r--r--test/docx/numbering-xml.tests.js63
2 files changed, 66 insertions, 3 deletions
diff --git a/test/docx/body-reader.tests.js b/test/docx/body-reader.tests.js
index 4fbea03..de7af2d 100644
--- a/test/docx/body-reader.tests.js
+++ b/test/docx/body-reader.tests.js
@@ -223,17 +223,17 @@ test("numbering properties are converted to numbering at specified level", funct
assert.deepEqual(numberingLevel, {level: "1", isOrdered: true});
});
-test("numbering properties are ignored if w:ilvl is missing", function() {
+test("when numbering properties are missing w:ilvl then level of 0 is assumed", function() {
var numberingPropertiesXml = new XmlElement("w:numPr", {}, [
new XmlElement("w:numId", {"w:val": "42"})
]);
var numbering = new NumberingMap({
- findLevel: {"42": {"1": {isOrdered: true, level: "1"}}}
+ findLevel: {"42": {"0": {isOrdered: true, level: "0"}}}
});
var numberingLevel = _readNumberingProperties(null, numberingPropertiesXml, numbering);
- assert.equal(numberingLevel, null);
+ assert.deepEqual(numberingLevel, {level: "0", isOrdered: true});
});
test("numbering properties are ignored if w:numId is missing", function() {
diff --git a/test/docx/numbering-xml.tests.js b/test/docx/numbering-xml.tests.js
index a648349..004e9ab 100644
--- a/test/docx/numbering-xml.tests.js
+++ b/test/docx/numbering-xml.tests.js
@@ -45,6 +45,69 @@ test('w:num element referencing non-existent w:abstractNumId is ignored', functi
duck.assertThat(numbering.findLevel("47", "0"), duck.equalTo(null));
});
+test('given no other levels with index of 0 when level is missing w:ilvl then level index is 0', function() {
+ var numbering = readNumberingXml(
+ new XmlElement("w:numbering", {}, [
+ new XmlElement("w:abstractNum", {"w:abstractNumId": "42"}, [
+ new XmlElement("w:lvl", {}, [
+ new XmlElement("w:numFmt", {"w:val": "decimal"})
+ ])
+ ]),
+ new XmlElement("w:num", {"w:numId": "47"}, [
+ new XmlElement("w:abstractNumId", {"w:val": "42"})
+ ])
+ ]),
+ {styles: stylesReader.defaultStyles}
+ );
+ duck.assertThat(numbering.findLevel("47", "0"), duck.hasProperties({
+ isOrdered: true
+ }));
+});
+
+test('given previous other level with index of 0 when level is missing w:ilvl then level is ignored', function() {
+ var numbering = readNumberingXml(
+ new XmlElement("w:numbering", {}, [
+ new XmlElement("w:abstractNum", {"w:abstractNumId": "42"}, [
+ new XmlElement("w:lvl", {"w:ilvl": "0"}, [
+ new XmlElement("w:numFmt", {"w:val": "bullet"})
+ ]),
+ new XmlElement("w:lvl", {}, [
+ new XmlElement("w:numFmt", {"w:val": "decimal"})
+ ])
+ ]),
+ new XmlElement("w:num", {"w:numId": "47"}, [
+ new XmlElement("w:abstractNumId", {"w:val": "42"})
+ ])
+ ]),
+ {styles: stylesReader.defaultStyles}
+ );
+ duck.assertThat(numbering.findLevel("47", "0"), duck.hasProperties({
+ isOrdered: false
+ }));
+});
+
+test('given subsequent other level with index of 0 when level is missing w:ilvl then level is ignored', function() {
+ var numbering = readNumberingXml(
+ new XmlElement("w:numbering", {}, [
+ new XmlElement("w:abstractNum", {"w:abstractNumId": "42"}, [
+ new XmlElement("w:lvl", {}, [
+ new XmlElement("w:numFmt", {"w:val": "decimal"})
+ ]),
+ new XmlElement("w:lvl", {"w:ilvl": "0"}, [
+ new XmlElement("w:numFmt", {"w:val": "bullet"})
+ ])
+ ]),
+ new XmlElement("w:num", {"w:numId": "47"}, [
+ new XmlElement("w:abstractNumId", {"w:val": "42"})
+ ])
+ ]),
+ {styles: stylesReader.defaultStyles}
+ );
+ duck.assertThat(numbering.findLevel("47", "0"), duck.hasProperties({
+ isOrdered: false
+ }));
+});
+
test('when level is missing w:numFmt then level is ordered', function() {
var numbering = readNumberingXml(
new XmlElement("w:numbering", {}, [