UNPKG

xlsx-encrypter

Version:

Service for generating and encrypting Excel/XLSX files

133 lines (111 loc) 3.47 kB
import { readFileSync } from "fs"; import { join } from "path"; import { dirSync } from "tmp-promise"; import { XlsxGenerator } from "."; const excelToJson = require("convert-excel-to-json"); describe("xlsx-generator", () => { const tempOutputDirectory = dirSync(); let xlsxGenerator: XlsxGenerator; beforeEach(() => { xlsxGenerator = new XlsxGenerator(); }); const password = "dummy-password"; const sheetName = "Fruit Sales"; const headers = ["fruit", "quantity", "price"]; const dummyData = [ { fruit: "Apples", quantity: 4, price: "£6.86", }, { fruit: "Oranges", quantity: 2, price: "£2.39", }, ]; const testFileDirectory = join(__dirname, "../test-files"); it("Generates an xlsx file with headers", async () => { const filePath = join( tempOutputDirectory.name, "/worksheet-with-headers.xlsx" ); const workSheet = xlsxGenerator.createWorkSheet([], sheetName, headers); await xlsxGenerator.exportWorkSheetsToFile(filePath, [workSheet]); const pathToExpectedReport = join( testFileDirectory, "worksheet-with-headers.json" ); const expectedReportContents = readFileSync(pathToExpectedReport).toString( "utf8" ); const expectedReport = JSON.parse(expectedReportContents); const generatedReport = excelToJson({ sourceFile: filePath, }); expect(generatedReport).toEqual(expectedReport); }); it("Generates an xlsx file with data", async () => { const filePath = join( tempOutputDirectory.name, "/worksheet-with-data.xlsx" ); const workSheet = xlsxGenerator.createWorkSheet( dummyData, sheetName, headers ); await xlsxGenerator.exportWorkSheetsToFile(filePath, [workSheet]); const pathToExpectedReport = join( testFileDirectory, "worksheet-with-data.json" ); const expectedReportContents = readFileSync(pathToExpectedReport).toString( "utf8" ); const expectedReport = JSON.parse(expectedReportContents); const generatedReport = excelToJson({ sourceFile: filePath, }); expect(generatedReport).toEqual(expectedReport); }); it("Generates an xlsx file with data placed at custom cell origin", async () => { const filePath = join( tempOutputDirectory.name, "/worksheet-with-custom-cell-origin.xlsx" ); const cellOrigin = "B2"; const workSheet = xlsxGenerator.createWorkSheet( dummyData, sheetName, headers, cellOrigin ); await xlsxGenerator.exportWorkSheetsToFile(filePath, [workSheet]); const pathToExpectedReport = join( testFileDirectory, "worksheet-with-custom-cell-origin.json" ); const expectedReportContents = readFileSync(pathToExpectedReport).toString( "utf8" ); const expectedReport = JSON.parse(expectedReportContents); const generatedReport = excelToJson({ sourceFile: filePath, }); expect(generatedReport).toEqual(expectedReport); }); // eslint-disable-next-line jest/expect-expect it("Generates an xlsx file with password", async () => { const filePath = join( tempOutputDirectory.name, "/worksheet-with-password.xlsx" ); const workSheet = xlsxGenerator.createWorkSheet( dummyData, sheetName, headers ); await xlsxGenerator.exportWorkSheetsToFile(filePath, [workSheet], password); }); });