UNPKG

docxtemplater

Version:

Generate docx, pptx, and xlsx from templates (Word, Powerpoint and Excel documents), from Node.js, the Browser and the command line

103 lines (102 loc) 3.83 kB
"use strict"; var inspectModule = require("../../inspect-module.js"); var _require = require("../utils.js"), expectToThrowSnapshot = _require.expectToThrowSnapshot, createDocV4 = _require.createDocV4, expect = _require.expect; describe("Inspect module", function () { it("should get main tags", function () { var iModule = inspectModule(); var doc = createDocV4("tag-loop-example.docx", { modules: [iModule] }); expect(iModule.getStructuredTags()).to.matchSnapshot(); expect(iModule.getTags()).to.be.deep.equal({ offre: { nom: {}, prix: {}, titre: {} }, nom: {}, prenom: {} }); var data = { offre: [{}], prenom: "John" }; doc.render(data); var fi = iModule.fullInspected["word/document.xml"]; var _fi$nullValues = fi.nullValues, summary = _fi$nullValues.summary, detail = _fi$nullValues.detail; var postparsed = fi.postparsed, parsed = fi.parsed, xmllexed = fi.xmllexed; expect(postparsed.length).to.equal(249); expect(parsed.length).to.equal(385); expect(xmllexed.length).to.equal(383); expect(iModule.inspect.tags).to.be.deep.equal(data); expect(detail).to.be.an("array"); expect(detail[0].part.value).to.equal("nom"); expect(detail[0].scopeManager.scopeList[0].prenom).to.equal("John"); expect(summary).to.be.deep.equal([["offre", "nom"], ["offre", "prix"], ["offre", "titre"], ["nom"]]); }); it("should get all tags (pptx file)", function () { var iModule = inspectModule(); createDocV4("multi-page.pptx", { modules: [iModule] }); expect(iModule.getStructuredTags()).to.matchSnapshot(); expect(iModule.getFileType()).to.be.deep.equal("pptx"); expect(iModule.getAllTags()).to.be.deep.equal({ tag: {}, users: { name: {} } }); expect(iModule.getTemplatedFiles().sort()).to.be.deep.equal(["ppt/slides/slide1.xml", "ppt/slides/slide2.xml", "ppt/slideLayouts/slideLayout1.xml", "ppt/slideLayouts/slideLayout10.xml", "ppt/slideLayouts/slideLayout11.xml", "ppt/slideLayouts/slideLayout12.xml", "ppt/slideLayouts/slideLayout2.xml", "ppt/slideLayouts/slideLayout3.xml", "ppt/slideLayouts/slideLayout4.xml", "ppt/slideLayouts/slideLayout5.xml", "ppt/slideLayouts/slideLayout6.xml", "ppt/slideLayouts/slideLayout7.xml", "ppt/slideLayouts/slideLayout8.xml", "ppt/slideLayouts/slideLayout9.xml", "ppt/slideMasters/slideMaster1.xml", "ppt/presentation.xml", "docProps/app.xml", "docProps/core.xml"].sort()); }); it("should get all tags and merge them", function () { var iModule = inspectModule(); createDocV4("multi-page-to-merge.pptx", { modules: [iModule] }); expect(iModule.getAllTags()).to.be.deep.equal({ tag: {}, users: { name: {}, age: {}, company: {} } }); }); it("should get all tags with additional data", function () { var iModule = inspectModule(); createDocV4("tag-product-loop.docx", { modules: [iModule] }); expect(iModule.getAllStructuredTags()).to.matchSnapshot(); }); it("should show throw error if calling getAllTags, getAllStructuredTags without attaching the module", function () { // Fixed since v3.67.5 var iModule = inspectModule(); expectToThrowSnapshot(function () { return iModule.getAllTags(); }); expectToThrowSnapshot(function () { return iModule.getTags(); }); expectToThrowSnapshot(function () { return iModule.getInspected(); }); expectToThrowSnapshot(function () { return iModule.getAllStructuredTags(); }); expectToThrowSnapshot(function () { return iModule.getTemplatedFiles(); }); expectToThrowSnapshot(function () { return iModule.getStructuredTags(); }); }); });