2018-09-20 10:11:59 -03:00
|
|
|
import { expect } from "chai";
|
2018-10-26 01:04:07 +01:00
|
|
|
|
|
|
|
import { Formatter } from "export/formatter";
|
|
|
|
|
|
|
|
import { Settings } from "./settings";
|
|
|
|
|
2018-09-20 10:11:59 -03:00
|
|
|
describe("Settings", () => {
|
|
|
|
describe("#constructor", () => {
|
|
|
|
it("should create a empty Settings with correct rootKey", () => {
|
2021-03-16 00:57:27 +00:00
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: false,
|
|
|
|
});
|
2018-09-20 10:11:59 -03:00
|
|
|
const tree = new Formatter().format(settings);
|
|
|
|
let keys = Object.keys(tree);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:settings");
|
2019-04-09 05:27:18 -04:00
|
|
|
keys = Object.keys(tree["w:settings"]);
|
2018-09-20 10:11:59 -03:00
|
|
|
expect(keys).is.an.instanceof(Array);
|
2021-02-27 01:40:55 +00:00
|
|
|
expect(keys).has.length(3);
|
2018-09-20 10:11:59 -03:00
|
|
|
});
|
|
|
|
});
|
|
|
|
describe("#addUpdateFields", () => {
|
|
|
|
const assertSettingsWithUpdateFields = (settings: Settings) => {
|
|
|
|
const tree = new Formatter().format(settings);
|
|
|
|
let keys = Object.keys(tree);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:settings");
|
|
|
|
const rootArray = tree["w:settings"];
|
|
|
|
expect(rootArray).is.an.instanceof(Array);
|
2021-02-27 01:40:55 +00:00
|
|
|
expect(rootArray).has.length(4);
|
2018-09-20 10:11:59 -03:00
|
|
|
keys = Object.keys(rootArray[0]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("_attr");
|
2021-02-27 01:40:55 +00:00
|
|
|
keys = Object.keys(rootArray[3]);
|
2018-09-20 10:11:59 -03:00
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:updateFields");
|
2021-02-27 01:40:55 +00:00
|
|
|
const updateFields = rootArray[3]["w:updateFields"];
|
2019-04-09 05:27:18 -04:00
|
|
|
keys = Object.keys(updateFields);
|
2018-09-20 10:11:59 -03:00
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("_attr");
|
2019-04-09 05:27:18 -04:00
|
|
|
const updateFieldsAttr = updateFields._attr;
|
2018-09-20 10:11:59 -03:00
|
|
|
expect(updateFieldsAttr["w:val"]).to.be.equal(true);
|
|
|
|
};
|
|
|
|
it("should add a UpdateFields with value true", () => {
|
2021-03-16 00:57:27 +00:00
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: false,
|
|
|
|
});
|
2018-09-20 10:11:59 -03:00
|
|
|
settings.addUpdateFields();
|
|
|
|
assertSettingsWithUpdateFields(settings);
|
|
|
|
});
|
|
|
|
it("should add a UpdateFields with value true only once", () => {
|
2021-03-16 00:57:27 +00:00
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: false,
|
|
|
|
});
|
2018-09-20 10:11:59 -03:00
|
|
|
settings.addUpdateFields();
|
|
|
|
assertSettingsWithUpdateFields(settings);
|
|
|
|
settings.addUpdateFields();
|
|
|
|
assertSettingsWithUpdateFields(settings);
|
|
|
|
});
|
|
|
|
});
|
2019-03-05 17:17:06 +01:00
|
|
|
describe("#addCompatibility", () => {
|
2021-02-27 01:40:55 +00:00
|
|
|
it("should add an empty Compatibility by default", () => {
|
2021-03-16 00:57:27 +00:00
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: false,
|
|
|
|
});
|
2019-03-05 17:17:06 +01:00
|
|
|
|
|
|
|
const tree = new Formatter().format(settings);
|
|
|
|
let keys: string[] = Object.keys(tree);
|
|
|
|
expect(keys[0]).to.be.equal("w:settings");
|
|
|
|
const rootArray = tree["w:settings"];
|
|
|
|
expect(rootArray).is.an.instanceof(Array);
|
2020-10-27 01:54:40 +00:00
|
|
|
expect(rootArray).has.length(3);
|
2019-03-05 17:17:06 +01:00
|
|
|
keys = Object.keys(rootArray[0]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("_attr");
|
2021-02-27 01:40:55 +00:00
|
|
|
keys = Object.keys(rootArray[1]);
|
2019-03-05 17:17:06 +01:00
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:compat");
|
2021-02-27 01:40:55 +00:00
|
|
|
expect(rootArray[1]["w:compat"][0]).to.deep.equal({
|
|
|
|
"w:compatSetting": {
|
|
|
|
_attr: {
|
|
|
|
"w:val": 15,
|
|
|
|
"w:uri": "http://schemas.microsoft.com/office/word",
|
|
|
|
"w:name": "compatibilityMode",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
2019-03-05 17:17:06 +01:00
|
|
|
});
|
|
|
|
});
|
2020-09-23 12:59:55 +02:00
|
|
|
describe("#addTrackRevisions", () => {
|
|
|
|
it("should add an empty Track Revisions", () => {
|
2021-03-16 00:57:27 +00:00
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: false,
|
|
|
|
});
|
2020-09-23 12:59:55 +02:00
|
|
|
settings.addTrackRevisions();
|
|
|
|
|
|
|
|
const tree = new Formatter().format(settings);
|
|
|
|
let keys: string[] = Object.keys(tree);
|
|
|
|
expect(keys[0]).to.be.equal("w:settings");
|
|
|
|
const rootArray = tree["w:settings"];
|
|
|
|
expect(rootArray).is.an.instanceof(Array);
|
2021-02-27 01:40:55 +00:00
|
|
|
expect(rootArray).has.length(4);
|
2020-09-23 12:59:55 +02:00
|
|
|
keys = Object.keys(rootArray[0]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("_attr");
|
2021-02-27 01:40:55 +00:00
|
|
|
keys = Object.keys(rootArray[3]);
|
2020-09-23 12:59:55 +02:00
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:trackRevisions");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe("#addTrackRevisionsTwice", () => {
|
|
|
|
it("should add an empty Track Revisions if called twice", () => {
|
2021-03-16 00:57:27 +00:00
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: false,
|
|
|
|
});
|
2020-09-23 12:59:55 +02:00
|
|
|
settings.addTrackRevisions();
|
|
|
|
settings.addTrackRevisions();
|
|
|
|
|
|
|
|
const tree = new Formatter().format(settings);
|
|
|
|
let keys: string[] = Object.keys(tree);
|
|
|
|
expect(keys[0]).to.be.equal("w:settings");
|
|
|
|
const rootArray = tree["w:settings"];
|
|
|
|
expect(rootArray).is.an.instanceof(Array);
|
2021-02-27 01:40:55 +00:00
|
|
|
expect(rootArray).has.length(4);
|
2020-09-23 12:59:55 +02:00
|
|
|
keys = Object.keys(rootArray[0]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("_attr");
|
2021-02-27 01:40:55 +00:00
|
|
|
keys = Object.keys(rootArray[3]);
|
2020-09-23 12:59:55 +02:00
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:trackRevisions");
|
|
|
|
});
|
|
|
|
});
|
2021-03-16 00:57:27 +00:00
|
|
|
|
|
|
|
describe("#addTrackRevisionsTwice", () => {
|
|
|
|
it("should add an empty Track Revisions if called twice", () => {
|
|
|
|
const settings = new Settings({
|
|
|
|
evenAndOddHeaders: true,
|
|
|
|
});
|
|
|
|
settings.addTrackRevisions();
|
|
|
|
settings.addTrackRevisions();
|
|
|
|
|
|
|
|
const tree = new Formatter().format(settings);
|
|
|
|
let keys: string[] = Object.keys(tree);
|
|
|
|
expect(keys[0]).to.be.equal("w:settings");
|
|
|
|
const rootArray = tree["w:settings"];
|
|
|
|
expect(rootArray).is.an.instanceof(Array);
|
|
|
|
expect(rootArray).has.length(5);
|
|
|
|
keys = Object.keys(rootArray[0]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("_attr");
|
|
|
|
keys = Object.keys(rootArray[4]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:trackRevisions");
|
|
|
|
keys = Object.keys(rootArray[2]);
|
|
|
|
expect(keys).is.an.instanceof(Array);
|
|
|
|
expect(keys).has.length(1);
|
|
|
|
expect(keys[0]).to.be.equal("w:evenAndOddHeaders");
|
|
|
|
});
|
|
|
|
});
|
2018-09-20 10:11:59 -03:00
|
|
|
});
|