From 6b702c4bd687828198949e22a3a701900028aa9a Mon Sep 17 00:00:00 2001 From: felipe Date: Wed, 8 Mar 2017 17:28:44 +0100 Subject: [PATCH] add ID property to Num and test Numbering methods --- ts/numbering/num.ts | 7 +++++++ ts/tests/numberingTest.ts | 31 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) 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", () => {