UNPKG

@interaktiv/dia-scripts

Version:

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

81 lines (76 loc) 2.62 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); describe('build', () => { let crossSpawnSyncMock, originalExit, originalArgv; beforeEach(() => { ({ sync: crossSpawnSyncMock } = require('cross-spawn')); originalExit = process.exit; originalArgv = process.argv; process.exit = jest.fn(); }); afterEach(() => { process.exit = originalExit; process.argv = originalArgv; jest.resetModules(); }); it('throws if in Salesforce DX project', () => { jest.mock('../../utils', () => (0, _extends2.default)({}, jest.requireActual('../../utils'), { isSfdxProject: () => true, ifSfdxProject: t => t, cleanDir: jest.fn() })); process.argv = ['node', '../build', ...[]]; expect(() => { require('.'); }).toThrow(/not supported/); }); it('throws if in Titanium project', () => { jest.mock('../../utils', () => (0, _extends2.default)({}, jest.requireActual('../../utils'), { isTitaniumProject: () => true, cleanDir: jest.fn() })); process.argv = ['node', '../build', ...[]]; expect(() => { require('.'); }).toThrow(/not supported/); }); it('throws if in Commerce project', () => { jest.mock('../../utils', () => (0, _extends2.default)({}, jest.requireActual('../../utils'), { isCommerceProject: () => true, cleanDir: jest.fn() })); process.argv = ['node', '../build', ...[]]; expect(() => { require('.'); }).toThrow(/not supported/); }); it('throws if --bundle flag given', () => { process.argv = ['node', '../build', ...['--bundle']]; expect(() => { require('.'); }).toThrow(/not supported/); }); it('throws if --browser flag given', () => { process.argv = ['node', '../build', ...['--browser']]; expect(() => { require('.'); }).toThrow(/not supported/); }); it('runs in Node.js project', () => { jest.mock('../../utils', () => (0, _extends2.default)({}, jest.requireActual('../../utils'), { isSfdxProject: () => false, isTitaniumProject: () => false, isCommerceProject: () => false, cleanDir: jest.fn() })); process.argv = ['node', '../build', ...[]]; require('.'); expect(crossSpawnSyncMock).toBeCalledTimes(1); const [firstCall] = crossSpawnSyncMock.mock.calls; const [script, calledArgs] = firstCall; expect([script, ...calledArgs].join(' ').replace(process.cwd(), '/blah-root')).toMatchSnapshot(); }); });