@interaktiv/dia-scripts
Version:
CLI toolbox with common scripts for most sort of projects at DIA
109 lines (96 loc) • 3.46 kB
JavaScript
;
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();
});
});
});