From 1939d255d4139fa0af9631c0aaa68853ad00acc7 Mon Sep 17 00:00:00 2001 From: Yvonnick Frin Date: Tue, 8 Feb 2022 12:46:56 +0100 Subject: [PATCH] :white_check_mark: Add a test to guarantee buffers order --- ...{main.spec.ts => main.integration.spec.ts} | 0 src/main.unit.spec.ts | 55 +++++++++++++++++++ 2 files changed, 55 insertions(+) rename src/{main.spec.ts => main.integration.spec.ts} (100%) create mode 100644 src/main.unit.spec.ts diff --git a/src/main.spec.ts b/src/main.integration.spec.ts similarity index 100% rename from src/main.spec.ts rename to src/main.integration.spec.ts diff --git a/src/main.unit.spec.ts b/src/main.unit.spec.ts new file mode 100644 index 0000000..b136327 --- /dev/null +++ b/src/main.unit.spec.ts @@ -0,0 +1,55 @@ +import { nodeHtmlToImage } from "./main"; +import { Cluster } from "puppeteer-cluster"; + +import { Screenshot } from "./models/Screenshot"; + +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +describe("node-html-to-image | Unit", () => { + let mockExit; + const buffer1 = Buffer.alloc(1); + const buffer2 = Buffer.alloc(1); + const html = "{{message}}"; + + beforeEach(() => { + jest.spyOn(Cluster, "launch").mockImplementation( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + jest.fn(() => ({ + execute: jest + .fn() + .mockImplementationOnce(async () => { + const screenshot = new Screenshot({ html }); + screenshot.setBuffer(buffer1); + await sleep(10); + return screenshot; + }) + .mockImplementationOnce(() => { + const screenshot = new Screenshot({ html }); + screenshot.setBuffer(buffer2); + return screenshot; + }), + idle: jest.fn(), + close: jest.fn(), + })) + ); + mockExit = jest.spyOn(process, "exit").mockImplementation((number) => { + throw new Error("process.exit: " + number); + }); + }); + + afterEach(() => { + mockExit.mockRestore(); + }); + + it("should sort buffer in the right order", async () => { + const result = await nodeHtmlToImage({ + html, + content: [{ message: "Hello world!" }, { message: "Bonjour monde!" }], + }); + + expect(result).toEqual([buffer1, buffer2]); + }); +}); + +jest.mock("puppeteer-cluster");