xlsx-encrypter
Version:
Service for generating and encrypting Excel/XLSX files
133 lines (111 loc) • 3.47 kB
text/typescript
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);
});
});