injects usersStat dependency to improve code coverage of Logs class

This commit is contained in:
Alessio Coser 2017-10-04 15:19:22 +02:00
parent d197c69eb9
commit 21450dfd7f
2 changed files with 46 additions and 3 deletions

View File

@ -1,11 +1,12 @@
'use strict';
const BbPromise = require('bluebird');
const userStats = require('../../utils/userStats');
const defaultUserStats = require('../../utils/userStats');
class Logs {
constructor(serverless) {
constructor(serverless, userStats) {
this.serverless = serverless;
this.userStats = userStats || defaultUserStats;
this.commands = {
logs: {
@ -55,7 +56,7 @@ class Logs {
if (sls && sls.processedInput && sls.processedInput.options) {
const opts = sls.processedInput.options;
const type = (opts.tail) ? 'service_logsTailed' : 'service_logsViewed';
userStats.track(type);
this.userStats.track(type);
}
return BbPromise.resolve();
}

View File

@ -1,6 +1,7 @@
'use strict';
const expect = require('chai').expect;
const sinon = require('sinon');
const Logs = require('./logs');
const Serverless = require('../../Serverless');
@ -16,4 +17,45 @@ describe('Logs', () => {
describe('#constructor()', () => {
it('should have commands', () => expect(logs.commands).to.be.not.empty);
});
describe('#track()', () => {
let userStats;
beforeEach(() => {
userStats = { track: sinon.spy() };
});
describe('Without cli processed input', () => {
it('do not track user stats', () => {
const newLogs = new Logs(serverless, userStats);
return newLogs.track()
.then(() => {
expect(userStats.track.called).to.be.equal(false);
});
});
});
describe('With cli processed input', () => {
it('tracks user stats with viewed option', () => {
serverless.processedInput = { commands: [], options: {} };
return new Logs(serverless, userStats).track()
.then(() => {
expect(userStats.track.calledWithExactly('service_logsViewed'))
.to.be.equal(true);
});
});
it('tracks user stats with tailed option', () => {
serverless.processedInput = { commands: [], options: { tail: true } };
return new Logs(serverless, userStats).track()
.then(() => {
expect(userStats.track.calledWithExactly('service_logsTailed'))
.to.be.equal(true);
});
});
});
});
});