import { expect } from "chai"; import { Formatter } from "export/formatter"; import { BorderStyle } from "file/styles"; import { TableBorders } from "./table-borders"; describe("TableBorders", () => { describe("#constructor", () => { describe("default borders", () => { it("should add a table cell top border using default width type", () => { const tableBorders = new TableBorders({}); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:left": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:bottom": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:right": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideH": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideV": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, ], }); }); }); describe("top border", () => { it("should add a table cell top border", () => { const tableBorders = new TableBorders({ top: { style: BorderStyle.DOUBLE, size: 1, color: "red", }, }); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "red", "w:space": 0, "w:sz": 1, "w:val": "double", }, }, }, { "w:left": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:bottom": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:right": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideH": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideV": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, ], }); }); }); describe("left border", () => { it("should add a table cell left border", () => { const tableBorders = new TableBorders({ left: { style: BorderStyle.DOUBLE, size: 1, color: "red", }, }); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:left": { _attr: { "w:color": "red", "w:space": 0, "w:sz": 1, "w:val": "double", }, }, }, { "w:bottom": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:right": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideH": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideV": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, ], }); }); }); describe("bottom border", () => { it("should add a table cell bottom border", () => { const tableBorders = new TableBorders({ bottom: { style: BorderStyle.DOUBLE, size: 1, color: "red", }, }); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:left": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:bottom": { _attr: { "w:color": "red", "w:space": 0, "w:sz": 1, "w:val": "double", }, }, }, { "w:right": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideH": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideV": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, ], }); }); }); describe("right border", () => { it("should add a table cell right border", () => { const tableBorders = new TableBorders({ right: { style: BorderStyle.DOUBLE, size: 1, color: "red", }, }); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:left": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:bottom": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:right": { _attr: { "w:color": "red", "w:space": 0, "w:sz": 1, "w:val": "double", }, }, }, { "w:insideH": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideV": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, ], }); }); }); describe("inside horizontal border", () => { it("should add a table cell inside horizontal border", () => { const tableBorders = new TableBorders({ insideHorizontal: { style: BorderStyle.DOUBLE, size: 1, color: "red", }, }); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:left": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:bottom": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:right": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideH": { _attr: { "w:color": "red", "w:space": 0, "w:sz": 1, "w:val": "double", }, }, }, { "w:insideV": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, ], }); }); }); describe("inside vertical border", () => { it("should add a table cell inside horizontal border", () => { const tableBorders = new TableBorders({ insideVertical: { style: BorderStyle.DOUBLE, size: 1, color: "red", }, }); const tree = new Formatter().format(tableBorders); expect(tree).to.deep.equal({ "w:tblBorders": [ { "w:top": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:left": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:bottom": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:right": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideH": { _attr: { "w:color": "auto", "w:space": 0, "w:sz": 4, "w:val": "single", }, }, }, { "w:insideV": { _attr: { "w:color": "red", "w:space": 0, "w:sz": 1, "w:val": "double", }, }, }, ], }); }); }); }); });