src/lib/commands/run/index.test.js
import test from 'ava';
import sinon from 'sinon';
import { mockImports, resetImports } from '../../utils/test-helpers';
import command, { __RewireAPI__ as moduleRewireAPI } from './index';
test.beforeEach('mock imports', t => {
const mocks = {
getOptions: sinon.stub(),
help: sinon.stub(),
run: sinon.stub(),
};
t.context = { mocks };
mockImports({ moduleRewireAPI, mocks });
});
test.afterEach.always('unmock imports', t => {
const imports = Object.keys(t.context.mocks);
resetImports({ moduleRewireAPI, imports });
});
test.serial('should show help', async t => {
const { getOptions, help, run } = t.context.mocks;
const argv = 'some-argv';
getOptions.withArgs(argv).returns({ helpWanted: true });
await command(argv);
t.true(getOptions.calledWith(argv));
t.true(help.called);
t.false(run.called);
});
test.serial('should run installer', async t => {
const { getOptions, help, run } = t.context.mocks;
const argv = 'some-argv';
const options = { some: 'options' };
getOptions.withArgs(argv).returns(options);
await command(argv);
t.true(getOptions.calledWith(argv));
t.false(help.called);
t.true(run.calledWith(options));
});