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