diff --git a/ts/numbering/num.ts b/ts/numbering/num.ts index 5a432732cc..f127817654 100644 --- a/ts/numbering/num.ts +++ b/ts/numbering/num.ts @@ -24,6 +24,7 @@ class NumAttributes extends XmlAttributeComponent { } export class Num extends XmlComponent { + public id: number; constructor(numId: number, abstractNumId: number) { super("w:num"); @@ -31,5 +32,11 @@ export class Num extends XmlComponent { numId: numId, })); this.root.push(new AbstractNumId(abstractNumId)); + this.id = numId; + } + + public clearVariables(): void { + super.clearVariables(); + delete this.id; } } diff --git a/ts/tests/numberingTest.ts b/ts/tests/numberingTest.ts index 402c6057a0..932b58b5d1 100644 --- a/ts/tests/numberingTest.ts +++ b/ts/tests/numberingTest.ts @@ -1,6 +1,7 @@ import { expect } from "chai"; import { Numbering } from "../numbering"; import { AbstractNumbering } from "../numbering/abstract-numbering"; +import { Num } from "../numbering/num"; import { Formatter } from '../export/formatter'; function jsonify(obj: Object) { @@ -45,6 +46,36 @@ describe("Numbering", () => { }) }); }); + + describe("#addAbstractNumbering", () => { + it("returns a new AbstractNumbering instance", () => { + const a2 = numbering.addAbstractNumbering(); + expect(a2).to.be.instanceof(AbstractNumbering); + }); + + it("assigns a unique ID to each abstract numbering it creates", () => { + const a2 = numbering.addAbstractNumbering(); + const a3 = numbering.addAbstractNumbering(); + expect(a2.id).not.to.equal(a3.id); + }); + }); + + describe("#addConcreteNumbering", () => { + it("returns a new Num instance with its abstract ID set to the AbstractNumbering's ID", () => { + const a2 = numbering.addAbstractNumbering(); + const n = numbering.addConcreteNumbering(a2); + expect(n).to.be.instanceof(Num); + const tree = new Formatter().format(numbering); + expect(n.id).to.equal(a2.id); + }); + + it("assigns a unique ID to each concrete numbering it creates", () => { + const a2 = numbering.addAbstractNumbering(); + const n = numbering.addConcreteNumbering(a2); + const n2 = numbering.addConcreteNumbering(a2); + expect(n.id).not.to.equal(n2.id); + }); + }); }); describe("AbstractNumbering", () => {