UNPKG

codify-node

Version:

Generates 1D, 2D, and composite barcodes in png, svg, or eps formats.

135 lines 6.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const pngjs_1 = require("pngjs"); const binary_1 = __importDefault(require("../lib/binary")); const png_1 = __importDefault(require("../lib/png")); const SymbologyType_1 = __importDefault(require("../types/enums/SymbologyType")); const main_1 = require("../main"); const OutputType_1 = __importDefault(require("../types/enums/OutputType")); describe('Symbology Library', () => { const mockPngRes = { bitmap: [1, 2, 3, 4, 5, 6], encodedData: '', width: 20, height: 25, message: 'Image created successfully.', code: 2 }; const mockSvgRes = { ...mockPngRes, encodedData: '<svg>...</svg>' }; const mockPngImage = new pngjs_1.PNG({ width: mockPngRes.width, height: mockPngRes.height }); const mockBase64Png = 'data:image/png;base64,iVBOR=='; beforeEach(() => { jest .spyOn(png_1.default, 'render') .mockReturnValue(mockPngImage); jest .spyOn(png_1.default, 'blobToBase64') .mockResolvedValue(mockBase64Png); }); afterEach(() => jest.resetAllMocks()); describe('createStream()', () => { it('should render a PNG image', async () => { jest .spyOn(binary_1.default, 'invoke') .mockResolvedValue(mockPngRes); const res = await (0, main_1.createStream)({ symbology: SymbologyType_1.default.CODE128 }, '12345', OutputType_1.default.PNG); expect(png_1.default.render).toHaveBeenCalledTimes(1); expect(png_1.default.render).toHaveBeenCalledWith(mockPngRes.bitmap, mockPngRes.width, mockPngRes.height, 'FFFFFFFF', '000000FF'); expect(png_1.default.blobToBase64).toHaveBeenCalledTimes(1); expect(png_1.default.blobToBase64).toHaveBeenCalledWith(mockPngImage); expect(res.data).toEqual(mockBase64Png); expect(res.width).toEqual(mockPngRes.width); expect(res.height).toEqual(mockPngRes.height); expect(res.message).toEqual(mockPngRes.message); }); it('should render an SVG string', async () => { jest .spyOn(binary_1.default, 'invoke') .mockResolvedValue(mockSvgRes); const res = await (0, main_1.createStream)({ symbology: SymbologyType_1.default.CODE128 }, '12345', OutputType_1.default.SVG); expect(png_1.default.render).not.toHaveBeenCalled(); expect(png_1.default.blobToBase64).not.toHaveBeenCalled(); expect(res.data).toEqual(mockSvgRes.encodedData); expect(res.width).toEqual(mockSvgRes.width); expect(res.height).toEqual(mockSvgRes.height); expect(res.message).toEqual(mockSvgRes.message); }); it('should fallback to a PNG image if no output type is specified', async () => { jest .spyOn(binary_1.default, 'invoke') .mockResolvedValue(mockPngRes); const res = await (0, main_1.createStream)({ symbology: SymbologyType_1.default.CODE128 }, '12345'); expect(png_1.default.render).toHaveBeenCalledTimes(1); expect(png_1.default.render).toHaveBeenCalledWith(mockPngRes.bitmap, mockPngRes.width, mockPngRes.height, 'FFFFFFFF', '000000FF'); expect(png_1.default.blobToBase64).toHaveBeenCalledTimes(1); expect(png_1.default.blobToBase64).toHaveBeenCalledWith(mockPngImage); expect(res.data).toEqual(mockBase64Png); expect(res.width).toEqual(mockPngRes.width); expect(res.height).toEqual(mockPngRes.height); expect(res.message).toEqual(mockPngRes.message); }); }); describe('createFile()', () => { beforeEach(() => { jest .spyOn(fs_1.default, 'writeFileSync') .mockReturnValue(); }); it('should reject if the fileName is not specified', async () => { expect.assertions(1); await expect((0, main_1.createFile)({ symbology: SymbologyType_1.default.CODE128 }, '12345')).rejects.toEqual('fileName is required.'); }); it('should render a PNG image if the fileName extension is `.png`', async () => { jest .spyOn(binary_1.default, 'invoke') .mockResolvedValue(mockPngRes); const fileName = 'out.png'; const res = await (0, main_1.createFile)({ symbology: SymbologyType_1.default.CODE128, fileName }, '12345'); expect(png_1.default.render).toHaveBeenCalledTimes(1); expect(png_1.default.render).toHaveBeenCalledWith(mockPngRes.bitmap, mockPngRes.width, mockPngRes.height, 'FFFFFFFF', '000000FF'); expect(fs_1.default.writeFileSync).toHaveBeenCalledTimes(1); expect(fs_1.default.writeFileSync).toHaveBeenCalledWith(fileName, png_1.default.getBuffer(mockPngImage)); expect(res.width).toEqual(mockPngRes.width); expect(res.height).toEqual(mockPngRes.height); expect(res.message).toEqual(mockPngRes.message); }); it('should render an SVG image if the fileName extension is `.svg`', async () => { jest .spyOn(binary_1.default, 'invoke') .mockResolvedValue(mockSvgRes); const fileName = 'out.svg'; const res = await (0, main_1.createFile)({ symbology: SymbologyType_1.default.CODE128, fileName }, '12345'); expect(png_1.default.render).not.toHaveBeenCalled(); expect(fs_1.default.writeFileSync).toHaveBeenCalledTimes(1); expect(fs_1.default.writeFileSync).toHaveBeenCalledWith(fileName, mockSvgRes.encodedData); expect(res.width).toEqual(mockSvgRes.width); expect(res.height).toEqual(mockSvgRes.height); expect(res.message).toEqual(mockSvgRes.message); }); }); }); //# sourceMappingURL=main.test.js.map