@interaktiv/dia-scripts
Version:
CLI toolbox with common scripts for most sort of projects at DIA
87 lines (78 loc) • 3.57 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _serializers = require("../__tests__/helpers/serializers");
let mockIsCI = false;
expect.addSnapshotSerializer(_serializers.unquoteSerializer);
let originalArgv, originalExit, prevCI, prevPreCommit, crossSpawnSyncMock;
describe('dia-scripts test apex', () => {
beforeAll(() => {
jest.mock('is-ci', () => mockIsCI);
jest.mock('../../utils', () => {
const path = require('path');
return (0, _extends2.default)({}, jest.requireActual('../../utils'), {
cleanDir: jest.fn(),
fromRoot: (...p) => path.join('/some/path/to', ...p),
resolveBin: (modName, {
executable = modName
} = {}) => executable
});
});
});
beforeEach(() => {
({
sync: crossSpawnSyncMock
} = require('cross-spawn'));
originalArgv = process.argv;
originalExit = process.exit;
prevPreCommit = process.env['SCRIPTS_PRE-COMMIT'];
prevCI = mockIsCI;
process.exit = jest.fn();
});
afterEach(() => {
process.argv = originalArgv;
process.exit = originalExit;
process.env['SCRIPTS_PRE-COMMIT'] = prevPreCommit;
mockIsCI = prevCI;
jest.resetModules();
});
afterAll(() => {
jest.resetModules();
});
it.each`
title | args | ci
${'calls sfdx force:apex:test:run with default args'} | ${[]} | ${false}
${'converts --coverage to --codecoverage'} | ${['--coverage']} | ${false}
${'uses custom result format with --resultformat'} | ${['--resultformat', 'json']} | ${false}
${'uses custom output dir with --outputdir'} | ${['--outputdir', './my-fancy-tests-dir']} | ${false}
${'uses custom wait time with --wait'} | ${['--wait', '123456789']} | ${false}
${'uses custom user with --targetusername'} | ${['--targetusername', 'voidy-bogusman']} | ${false}
${'uses junit format on CI'} | ${[]} | ${true}
${'do not uses default user locally without --targetusername'} | ${[]} | ${false}
${'forwards args'} | ${['--synchronous', '--verbose']} | ${false}
`('$title', ({
args = [],
ci = false,
preCommit = false
}) => {
mockIsCI = ci;
process.env['SCRIPTS_PRE-COMMIT'] = preCommit;
process.argv = ['node', './apex', ...args];
require('./apex');
expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1);
const [firstCall] = crossSpawnSyncMock.mock.calls;
const [script, calledArgs] = firstCall;
expect([script, ...calledArgs].join(' ')).toMatchSnapshot();
});
it('should not pass files to SFDX on PRE-COMMIT', () => {
mockIsCI = false;
process.env['SCRIPTS_PRE-COMMIT'] = true;
process.argv = ['node', './apex', ...['MyStagedApexClass.cls']];
require('./apex');
expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1);
const [firstCall] = crossSpawnSyncMock.mock.calls;
const [script, calledArgs] = firstCall;
expect([script, ...calledArgs].join(' ')).toMatchSnapshot();
expect(calledArgs).not.toEqual(['--tests']);
});
});