UNPKG

@interaktiv/dia-scripts

Version:

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

87 lines (78 loc) 3.57 kB
"use strict"; 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']); }); });