src/lib/commands/generate/index.test.js
import test from 'ava';
import sinon from 'sinon';
import generate, { __RewireAPI__ as moduleRewireAPI } from './index';
const helpData = { argv: 'some argv', seederName: 'some-seeder-name' };
test.beforeEach('create stubs', t => {
const stubs = {
getOptions: sinon.stub(),
help: sinon.stub(),
generateSeeder: sinon.stub(),
};
Object.keys(stubs).forEach(methodName =>
moduleRewireAPI.__Rewire__(methodName, stubs[methodName])
);
t.context = { stubs };
});
test.afterEach.always('restore stubs', t => {
const { stubs } = t.context;
Object.keys(stubs).forEach(methodName =>
moduleRewireAPI.__ResetDependency__(methodName)
);
});
test.serial('should show help when asking for help', async t => {
const { argv } = helpData;
const { getOptions, help, generateSeeder } = t.context.stubs;
getOptions.withArgs(argv).returns({ helpWanted: true });
await generate(argv);
t.true(getOptions.calledWith(argv));
t.true(help.called);
t.false(generateSeeder.called);
});
test.serial('should generate seeder when asking with seeder-name', async t => {
const { argv, seederName } = helpData;
const { getOptions, help, generateSeeder } = t.context.stubs;
getOptions.withArgs(argv).returns({ seederName });
await generate(argv);
t.true(getOptions.calledWith(argv));
t.false(help.called);
t.true(generateSeeder.calledWith(seederName));
});