UNPKG

@asyncapi/generator

Version:

The AsyncAPI generator. It can generate documentation, code, anything!

77 lines (67 loc) 3.13 kB
/* eslint-disable sonarjs/no-duplicate-string */ const path = require('path'); const Generator = require('../lib/generator'); const log = require('loglevel'); const utils = jest.requireActual('../lib/utils'); const logMessage = require('./../lib/logMessages.js'); describe('Utils', () => { describe('#getTemplateDetails', () => { let resolvePkg, resolveFrom; const templateNpmName = 'nameOfTestTemplate'; beforeEach(() => { resolvePkg = require('resolve-pkg'); resolveFrom = require('resolve-from'); jest.mock(path.resolve('./testTemplate', 'package.json'), () => ({ name: 'nameOfTestTemplate' }), { virtual: true }); jest.mock(path.resolve(Generator.DEFAULT_TEMPLATES_DIR, templateNpmName, 'package.json'), () => ({ name: 'nameOfTestTemplate' }), { virtual: true }); }); it('works with a file system path', () => { log.debug = jest.fn(); utils.isFileSystemPath = jest.fn(() => true); const templatePath = './testTemplate'; const result = utils.getTemplateDetails(templatePath, 'package.json'); expect(log.debug).toHaveBeenCalledWith(logMessage.NODE_MODULES_INSTALL); expect(result).toStrictEqual({ name: templateNpmName, pkgPath: path.resolve('./testTemplate') }); }); it('works with an npm package', () => { log.debug = jest.fn(); utils.isFileSystemPath = jest.fn(() => false); const packagePath = path.join(Generator.DEFAULT_TEMPLATES_DIR, templateNpmName); resolvePkg.__resolvePkgValue = packagePath; const result = utils.getTemplateDetails(templateNpmName, 'package.json'); expect(log.debug).not.toHaveBeenCalledWith(logMessage.NODE_MODULES_INSTALL); expect(log.debug).not.toHaveBeenCalledWith(logMessage.templateNotFound(templateNpmName)); expect(result).toStrictEqual({ name: templateNpmName, pkgPath: packagePath }); }); it('works with global npm package', () => { log.debug = jest.fn(); utils.isFileSystemPath = jest.fn(() => false); resolvePkg.__resolvePkgValue = undefined; resolveFrom.__resolveFromValue = path.join(Generator.DEFAULT_TEMPLATES_DIR, templateNpmName, 'package.json'); utils.getTemplateDetails(templateNpmName, 'package.json'); expect(log.debug).not.toHaveBeenCalledWith(logMessage.NODE_MODULES_INSTALL); expect(log.debug).toHaveBeenCalledWith(logMessage.templateNotFound(templateNpmName)); }); it('doesnt work with a url', async () => { resolvePkg.__resolvePkgValue = undefined; resolveFrom.__resolveFromValue = undefined; const result = utils.getTemplateDetails(templateNpmName, 'package.json'); expect(result).toStrictEqual(undefined); }); }); describe('#exists', () => { it('should return true if file exist', async () => { const exists = await utils.exists(`${process.cwd()}/package.json`); expect(exists).toBeTruthy(); }); it('should return false if file does not exist', async () => { const exists = await utils.exists('./invalid-file'); expect(exists).toBeFalsy(); }); }); });