UNPKG

@interaktiv/dia-scripts

Version:

CLI toolbox with common scripts for most sort of projects at DIA

109 lines (96 loc) 3.46 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _serializers = require("../__tests__/helpers/serializers"); expect.addSnapshotSerializer(_serializers.unquoteSerializer); expect.addSnapshotSerializer(_serializers.winPathSerializer); expect.addSnapshotSerializer(_serializers.relativePathSerializer); let originalArgv = process.argv; let originalExit = process.exit; let crossSpawnSyncMock; describe('lint aura', () => { beforeEach(() => { ({ sync: crossSpawnSyncMock } = require('cross-spawn')); jest.mock('../../utils', () => { const path = require('path'); return (0, _extends2.default)({}, jest.requireActual('../../utils'), { resolveBin: (modName, { executable = modName } = {}) => executable, fromRoot: jest.fn((...p) => path.join('/my-root/blah', ...p)) }); }); originalArgv = process.argv; originalExit = process.exit; process.exit = jest.fn(); }); afterEach(() => { process.exit = originalExit; process.argv = originalArgv; jest.resetModules(); }); describe('when on PRE-COMMIT', () => { let originalEnv; beforeEach(() => { originalEnv = process.env; process.env['SCRIPTS_PRE-COMMIT'] = 'true'; }); afterEach(() => { process.env = originalEnv; }); it('runs on given files, but only for js files and within aura dir', () => { process.argv = ['node', './aura', ...['./package.json', './src/index.css', 'CHANGELOG.md', './src/component.js', 'force-app/main/default/aura/mySearch/mySearchHelper.js', 'README.md', 'force-app/main/default/aura/mySearch/mySearch.html']]; require('./aura'); expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1); const [firstCall] = crossSpawnSyncMock.mock.calls; const [script, calledArgs] = firstCall; expect([script, ...calledArgs].join(' ')).toMatchSnapshot(); }); it('does not run if no file is given', () => { process.argv = ['node', './aura', ...[]]; require('./aura'); expect(crossSpawnSyncMock).toHaveBeenCalledTimes(0); }); }); describe('when NOT on PRE-COMMIT', () => { let originalEnv; beforeEach(() => { originalEnv = process.env; process.env['SCRIPTS_PRE-COMMIT'] = 'false'; }); afterEach(() => { process.env = originalEnv; }); it.each` title | params ${'calls sfdx force:lightning:lint CLI with default args'} | ${{}} ${'omits --exit argument when --no-exit is passed'} | ${{ args: ['--no-exit'] }} `('$title', ({ params = {} }) => { const utils = require('../../utils'); const { args = [], hasPkgProp = () => false, hasFile = () => false } = params; // Before each Object.assign(utils, { hasPkgProp, hasFile, resolveBin: (modName, { executable = modName } = {}) => executable }); process.argv = ['node', './aura', ...args]; require('./aura'); expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1); const [firstCall] = crossSpawnSyncMock.mock.calls; const [script, calledArgs] = firstCall; expect([script, ...calledArgs].join(' ')).toMatchSnapshot(); }); }); });