'use strict' const expect = require('chai').expect const sinon = require('sinon') const SlStats = require('../../../../lib/plugins/slstats') const Serverless = require('../../../../lib/serverless') const config = require('@serverless/utils/config') describe('SlStats', () => { let slStats let serverless beforeEach(async () => { serverless = new Serverless({ commands: ['print'], options: {}, serviceDir: null, }) return serverless.init().then(() => { slStats = new SlStats(serverless) }) }) describe('#constructor()', () => { it('should have access to the serverless instance', () => { expect(slStats.serverless).to.deep.equal(serverless) }) it('should have commands', () => expect(slStats.commands).to.be.not.empty) it('should have hooks', () => expect(slStats.hooks).to.be.not.empty) }) describe('#toggleStats()', () => { let setStub beforeEach(() => { setStub = sinon.stub(config, 'set') }) afterEach(() => { config.set.restore() }) it('should set config.trackingDisabled to true if disabled', () => { setStub.returns() slStats.options = { disable: true } slStats.toggleStats() expect(setStub.calledOnce).to.equal(true) expect(setStub.calledWithExactly('trackingDisabled', true)).to.equal(true) }) it('should set config.trackingDisabled to false if enabled', () => { setStub.returns() slStats.options = { enable: true } slStats.toggleStats() expect(setStub.calledOnce).to.equal(true) expect(setStub.calledWithExactly('trackingDisabled', false)).to.equal( true, ) }) it('should resolve if no "enabled" / "disabled" options is given', () => { setStub.returns() slStats.options = {} slStats.toggleStats() expect(setStub.calledOnce).to.equal(false) }) }) })