codify-node
Version:
Generates 1D, 2D, and composite barcodes in png, svg, or eps formats.
135 lines • 6.44 kB
JavaScript
"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