From 8a3ccdb196634483df10bf73ee1812ff5a350925 Mon Sep 17 00:00:00 2001 From: Dolan Date: Tue, 25 Oct 2022 01:08:54 +0100 Subject: [PATCH] Upgrade chai to 4.x --- package-lock.json | 182 +- package.json | 2 +- src/file/numbering/abstract-numbering.spec.ts | 2078 ++++++++++++++++- src/file/numbering/concrete-numbering.spec.ts | 26 +- 4 files changed, 2118 insertions(+), 170 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68b841b621..9237b3022c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", "buffer": "^6.0.3", - "chai": "^3.5.0", + "chai": "^4.3.6", "cspell": "^6.2.2", "docsify-cli": "^4.3.0", "eslint": "^8.23.0", @@ -1180,15 +1180,6 @@ "type-detect": "4.0.8" } }, - "node_modules/@sinonjs/commons/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@sinonjs/fake-timers": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", @@ -1209,15 +1200,6 @@ "type-detect": "^4.0.8" } }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@sinonjs/text-encoding": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", @@ -2909,17 +2891,21 @@ "dev": true }, "node_modules/chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, "dependencies": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" }, "engines": { - "node": ">= 0.4.0" + "node": ">=4" } }, "node_modules/chainsaw": { @@ -2948,6 +2934,15 @@ "node": ">=4" } }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3778,24 +3773,15 @@ } }, "node_modules/deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "dependencies": { - "type-detect": "0.1.1" + "type-detect": "^4.0.0" }, "engines": { - "node": "*" - } - }, - "node_modules/deep-eql/node_modules/type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true, - "engines": { - "node": "*" + "node": ">=0.12" } }, "node_modules/deep-extend": { @@ -5701,6 +5687,15 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", @@ -7351,6 +7346,15 @@ "node": ">=8" } }, + "node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -8590,6 +8594,15 @@ "node": ">=8" } }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -10643,12 +10656,12 @@ } }, "node_modules/type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "engines": { - "node": "*" + "node": ">=4" } }, "node_modules/type-fest": { @@ -12629,14 +12642,6 @@ "dev": true, "requires": { "type-detect": "4.0.8" - }, - "dependencies": { - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - } } }, "@sinonjs/fake-timers": { @@ -12657,14 +12662,6 @@ "@sinonjs/commons": "^1.6.0", "lodash.get": "^4.4.2", "type-detect": "^4.0.8" - }, - "dependencies": { - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - } } }, "@sinonjs/text-encoding": { @@ -13937,14 +13934,18 @@ "dev": true }, "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" } }, "chainsaw": { @@ -13967,6 +13968,12 @@ "supports-color": "^5.3.0" } }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -14613,20 +14620,12 @@ } }, "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } + "type-detect": "^4.0.0" } }, "deep-extend": { @@ -16066,6 +16065,12 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, "get-intrinsic": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", @@ -17297,6 +17302,15 @@ } } }, + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -18236,6 +18250,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -19776,9 +19796,9 @@ } }, "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { diff --git a/package.json b/package.json index 1f897f127b..47f938d62e 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", "buffer": "^6.0.3", - "chai": "^3.5.0", + "chai": "^4.3.6", "cspell": "^6.2.2", "docsify-cli": "^4.3.0", "eslint": "^8.23.0", diff --git a/src/file/numbering/abstract-numbering.spec.ts b/src/file/numbering/abstract-numbering.spec.ts index e17c826c2d..98569ede5a 100644 --- a/src/file/numbering/abstract-numbering.spec.ts +++ b/src/file/numbering/abstract-numbering.spec.ts @@ -1,7 +1,6 @@ import { expect } from "chai"; import { Formatter } from "@export/formatter"; -import { EMPTY_OBJECT } from "@file/xml-components"; import { AlignmentType, EmphasisMarkType, TabStopPosition } from "../paragraph"; import { UnderlineType } from "../paragraph/run/underline"; @@ -26,11 +25,61 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ _attr: { "w:ilvl": 3, "w15:tentative": 1 } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:start": { _attr: { "w:val": 1 } } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:lvlJc": { _attr: { "w:val": "end" } } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:numFmt": { _attr: { "w:val": LevelFormat.LOWER_LETTER } } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:lvlText": { _attr: { "w:val": "%1)" } } }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": LevelFormat.LOWER_LETTER, + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%1)", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "end", + }, + }, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 3, + }, + }, + ], + }, + ], + }); }); it("uses 'start' as the default alignment", () => { @@ -42,11 +91,61 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ _attr: { "w:ilvl": 3, "w15:tentative": 1 } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:start": { _attr: { "w:val": 1 } } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:lvlJc": { _attr: { "w:val": "start" } } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:numFmt": { _attr: { "w:val": LevelFormat.LOWER_LETTER } } }); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:lvlText": { _attr: { "w:val": "%1)" } } }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": LevelFormat.LOWER_LETTER, + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%1)", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 3, + }, + }, + ], + }, + ], + }); }); it("has suffix", () => { @@ -60,7 +159,69 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:suff": { _attr: { "w:val": "space" } } }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerLetter", + }, + }, + }, + { + "w:suff": { + _attr: { + "w:val": "space", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%1)", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "end", + }, + }, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 3, + }, + }, + ], + }, + ], + }); + // expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:suff": { _attr: { "w:val": "space" } } }); }); describe("formatting methods: paragraph properties", () => { @@ -78,8 +239,71 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:ind": { _attr: { "w:left": 720 } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:ind": { + _attr: { + "w:left": 720, + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -97,8 +321,72 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:spacing": { _attr: { "w:before": 50, "w:after": 150 } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:spacing": { + _attr: { + "w:after": 150, + "w:before": 50, + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -116,8 +404,71 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:jc": { _attr: { "w:val": "center" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:jc": { + _attr: { + "w:val": "center", + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -135,8 +486,71 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:jc": { _attr: { "w:val": "left" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:jc": { + _attr: { + "w:val": "left", + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -154,8 +568,71 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:jc": { _attr: { "w:val": "right" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:jc": { + _attr: { + "w:val": "right", + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -173,8 +650,71 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:jc": { _attr: { "w:val": "both" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:jc": { + _attr: { + "w:val": "both", + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -192,20 +732,75 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [ + expect(tree).to.deep.equal({ + "w:abstractNum": [ { - "w:pBdr": [ + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ { - "w:bottom": { + "w:start": { _attr: { - "w:color": "auto", - "w:space": 1, - "w:val": "single", - "w:sz": 6, + "w:val": 1, }, }, }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:pBdr": [ + { + "w:bottom": { + _attr: { + "w:color": "auto", + "w:space": 1, + "w:sz": 6, + "w:val": "single", + }, + }, + }, + ], + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, ], }, ], @@ -226,10 +821,74 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [ + expect(tree).to.deep.equal({ + "w:abstractNum": [ { - "w:tabs": [{ "w:tab": { _attr: { "w:val": "left", "w:pos": 1200 } } }], + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:tabs": [ + { + "w:tab": { + _attr: { + "w:pos": 1200, + "w:val": "left", + }, + }, + }, + ], + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], }, ], }); @@ -249,10 +908,74 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [ + expect(tree).to.deep.equal({ + "w:abstractNum": [ { - "w:tabs": [{ "w:tab": { _attr: { "w:val": "right", "w:pos": 9026 } } }], + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:tabs": [ + { + "w:tab": { + _attr: { + "w:pos": 9026, + "w:val": "right", + }, + }, + }, + ], + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], }, ], }); @@ -272,8 +995,67 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:keepLines": EMPTY_OBJECT }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:keepLines": {}, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -291,8 +1073,67 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:pPr": [{ "w:keepNext": EMPTY_OBJECT }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:pPr": [ + { + "w:keepNext": {}, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); }); @@ -332,7 +1173,64 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:rPr": expected }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": expected, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], + }); }); }); @@ -350,8 +1248,67 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:smallCaps": {} }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [ + { + "w:smallCaps": {}, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -369,8 +1326,67 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:caps": {} }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [ + { + "w:caps": {}, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -389,8 +1405,67 @@ describe("AbstractNumbering", () => { ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:strike": {} }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [ + { + "w:strike": {}, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -408,8 +1483,67 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:dstrike": {} }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [ + { + "w:dstrike": {}, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -427,8 +1561,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:vertAlign": { _attr: { "w:val": "subscript" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:vertAlign": { _attr: { "w:val": "subscript" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -446,8 +1635,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:vertAlign": { _attr: { "w:val": "superscript" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:vertAlign": { _attr: { "w:val": "superscript" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -465,18 +1709,73 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [ + expect(tree).to.deep.equal({ + "w:abstractNum": [ { - "w:rFonts": { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { _attr: { - "w:ascii": "Times", - "w:cs": "Times", - "w:eastAsia": "Times", - "w:hAnsi": "Times", + "w:val": "hybridMultilevel", }, }, }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [ + { + "w:rFonts": { + _attr: { + "w:ascii": "Times", + "w:cs": "Times", + "w:eastAsia": "Times", + "w:hAnsi": "Times", + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, ], }); }); @@ -498,16 +1797,71 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [ + expect(tree).to.deep.equal({ + "w:abstractNum": [ { - "w:rFonts": { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { _attr: { - "w:ascii": "Times", - "w:eastAsia": "KaiTi", + "w:val": "hybridMultilevel", }, }, }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [ + { + "w:rFonts": { + _attr: { + "w:ascii": "Times", + "w:eastAsia": "KaiTi", + }, + }, + }, + ], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, ], }); }); @@ -541,7 +1895,64 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:rPr": expected }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": expected, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], + }); }); }); @@ -574,7 +1985,64 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:rPr": expected }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": expected, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], + }); }); }); @@ -612,7 +2080,64 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:rPr": expected }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": expected, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], + }); }); }); @@ -647,7 +2172,64 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ "w:rPr": expected }); + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": expected, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], + }); }); }); @@ -666,8 +2248,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:u": { _attr: { "w:val": "single" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:u": { _attr: { "w:val": "single" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -687,8 +2324,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:u": { _attr: { "w:val": "double" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:u": { _attr: { "w:val": "double" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -709,8 +2401,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:u": { _attr: { "w:val": "double", "w:color": "005599" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:u": { _attr: { "w:val": "double", "w:color": "005599" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); }); @@ -730,8 +2477,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:em": { _attr: { "w:val": "dot" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:em": { _attr: { "w:val": "dot" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); @@ -751,8 +2553,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:em": { _attr: { "w:val": "dot" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:em": { _attr: { "w:val": "dot" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); }); @@ -771,8 +2628,63 @@ describe("AbstractNumbering", () => { }, ]); const tree = new Formatter().format(abstractNumbering); - expect(tree["w:abstractNum"][2]["w:lvl"]).to.include({ - "w:rPr": [{ "w:color": { _attr: { "w:val": "123456" } } }], + expect(tree).to.deep.equal({ + "w:abstractNum": [ + { + _attr: { + "w15:restartNumberingAfterBreak": 0, + "w:abstractNumId": 1, + }, + }, + { + "w:multiLevelType": { + _attr: { + "w:val": "hybridMultilevel", + }, + }, + }, + { + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:numFmt": { + _attr: { + "w:val": "lowerRoman", + }, + }, + }, + { + "w:lvlText": { + _attr: { + "w:val": "%0.", + }, + }, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + "w:rPr": [{ "w:color": { _attr: { "w:val": "123456" } } }], + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 0, + }, + }, + ], + }, + ], }); }); }); diff --git a/src/file/numbering/concrete-numbering.spec.ts b/src/file/numbering/concrete-numbering.spec.ts index 4e0e6e03ad..ef73d18983 100644 --- a/src/file/numbering/concrete-numbering.spec.ts +++ b/src/file/numbering/concrete-numbering.spec.ts @@ -56,20 +56,36 @@ describe("ConcreteNumbering", () => { }, }); const tree = new Formatter().format(concreteNumbering); - expect(tree["w:num"]).to.include({ - "w:lvlOverride": [ + expect(tree).to.deep.equal({ + "w:num": [ { _attr: { - "w:ilvl": 1, + "w:numId": 0, }, }, { - "w:startOverride": { + "w:abstractNumId": { _attr: { - "w:val": 9, + "w:val": 1, }, }, }, + { + "w:lvlOverride": [ + { + _attr: { + "w:ilvl": 1, + }, + }, + { + "w:startOverride": { + _attr: { + "w:val": 9, + }, + }, + }, + ], + }, ], }); });