'use strict' const expect = require('chai').expect const Rollback = require('../../../../lib/plugins/rollback') const Serverless = require('../../../../lib/serverless') describe('Rollback', () => { let rollback let serverless beforeEach(() => { serverless = new Serverless({ commands: [], options: {} }) rollback = new Rollback(serverless) }) describe('#constructor()', () => { describe('when dealing with normal rollbacks', () => { it('should have the command "rollback"', () => { // eslint-disable-next-line no-unused-expressions expect(rollback.commands.rollback).to.not.be.undefined }) it('should have a lifecycle events initialize and rollback', () => { expect(rollback.commands.rollback.lifecycleEvents).to.deep.equal([ 'initialize', 'rollback', ]) }) it('should not have a required option timestamp', () => { // eslint-disable-next-line no-unused-expressions expect(rollback.commands.rollback.options.timestamp.required).to.be .false }) }) describe('when dealing with function rollbacks', () => { it('should have the command "rollback function"', () => { // eslint-disable-next-line no-unused-expressions expect(rollback.commands.rollback.commands.function).to.not.be.undefined }) it('should have a lifecycle event rollback', () => { expect( rollback.commands.rollback.commands.function.lifecycleEvents, ).to.deep.equal(['rollback']) }) it('should have a required option function', () => { // eslint-disable-next-line no-unused-expressions expect( rollback.commands.rollback.commands.function.options.function .required, ).to.be.true }) }) }) })