Skip to content

Commit

Permalink
Complete test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Grégoire Weber committed May 29, 2017
1 parent cfc7202 commit 8b1b3a3
Showing 1 changed file with 60 additions and 2 deletions.
62 changes: 60 additions & 2 deletions tests/commands/BarracksCommand.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -770,16 +770,21 @@ describe('BarracksCommand', () => {
it('should print error and display help', () => {
// Given
const originalConsoleError = console.error;
const helpSpy = sinon.spy();
const program = {
help: sinon.spy()
help: (callback) => {
helpSpy(callback);
callback();
}
};
console.error = sinon.spy();

// When
barracksCommand.error(program);

// Then
expect(program.help).to.have.been.calledOnce;
expect(helpSpy).to.have.been.calledOnce;
expect(helpSpy).to.have.been.calledWithExactly(sinon.match.func);
expect(console.error).to.have.been.calledOnce;
expect(console.error).to.have.been.calledWithExactly(
'Mandatory arguments are missing or invalid.'
Expand Down Expand Up @@ -860,6 +865,32 @@ describe('BarracksCommand', () => {
expect(spyRender).to.have.been.calledWithExactly(executeResponse);
});

it('should call renderer if execution successful and exit with code != 0 when renderer reject', () => {
// Given
const executeResponse = { the: 'response' };
spyRender = sinon.spy();
mockedRender = (data) => {
spyRender(data);
return Promise.reject();
};
mockedBarracksCommand.cleanupProgramOptions = sinon.spy();
mockedBarracksCommand.validateCommand = sinon.stub().returns(true);
mockedBarracksCommand.execute = sinon.stub().returns(executeResponse);

// When
mockedBarracksCommand.render();

// Then
expect(mockedBarracksCommand.cleanupProgramOptions).to.have.been.calledOnce;
expect(mockedBarracksCommand.cleanupProgramOptions).to.have.been.calledWithExactly(program);
expect(mockedBarracksCommand.validateCommand).to.have.been.calledOnce;
expect(mockedBarracksCommand.validateCommand).to.have.been.calledWithExactly(program);
expect(mockedBarracksCommand.execute).to.have.been.calledOnce;
expect(mockedBarracksCommand.execute).to.have.been.calledWithExactly(program);
expect(spyRender).to.have.been.calledOnce;
expect(spyRender).to.have.been.calledWithExactly(executeResponse);
});

it('should call json renderer if execution successful and json flag', () => {
// Given
const executeResponse = { the: 'response' };
Expand All @@ -886,5 +917,32 @@ describe('BarracksCommand', () => {
expect(spyJsonRender).to.have.been.calledOnce;
expect(spyJsonRender).to.have.been.calledWithExactly(executeResponse);
});

it('should call json renderer if execution successful and json flag and exit with code != 0 when renderer reject', () => {
// Given
const executeResponse = { the: 'response' };
program.json = true;
spyJsonRender = sinon.spy();
mockedJsonRender = (data) => {
spyJsonRender(data);
return Promise.reject();
};
mockedBarracksCommand.cleanupProgramOptions = sinon.spy();
mockedBarracksCommand.validateCommand = sinon.stub().returns(true);
mockedBarracksCommand.execute = sinon.stub().returns(executeResponse);

// When
mockedBarracksCommand.render();

// Then
expect(mockedBarracksCommand.cleanupProgramOptions).to.have.been.calledOnce;
expect(mockedBarracksCommand.cleanupProgramOptions).to.have.been.calledWithExactly(program);
expect(mockedBarracksCommand.validateCommand).to.have.been.calledOnce;
expect(mockedBarracksCommand.validateCommand).to.have.been.calledWithExactly(program);
expect(mockedBarracksCommand.execute).to.have.been.calledOnce;
expect(mockedBarracksCommand.execute).to.have.been.calledWithExactly(program);
expect(spyJsonRender).to.have.been.calledOnce;
expect(spyJsonRender).to.have.been.calledWithExactly(executeResponse);
});
});
});

0 comments on commit 8b1b3a3

Please sign in to comment.