|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +const sinon = require('sinon'); |
| 4 | +const BbPromise = require('bluebird'); |
| 5 | + |
| 6 | +const GoogleProvider = require('../provider/googleProvider'); |
| 7 | +const GooglePackage = require('./googlePackage'); |
| 8 | +const Serverless = require('../test/serverless'); |
| 9 | + |
| 10 | +describe('GooglePackage', () => { |
| 11 | + let serverless; |
| 12 | + let options; |
| 13 | + let googlePackage; |
| 14 | + |
| 15 | + beforeEach(() => { |
| 16 | + serverless = new Serverless(); |
| 17 | + options = { |
| 18 | + stage: 'my-stage', |
| 19 | + region: 'my-region', |
| 20 | + }; |
| 21 | + serverless.setProvider('google', new GoogleProvider(serverless)); |
| 22 | + googlePackage = new GooglePackage(serverless, options); |
| 23 | + }); |
| 24 | + |
| 25 | + describe('#constructor()', () => { |
| 26 | + it('should set the serverless instance', () => { |
| 27 | + expect(googlePackage.serverless).toEqual(serverless); |
| 28 | + }); |
| 29 | + |
| 30 | + it('should set options if provided', () => { |
| 31 | + expect(googlePackage.options).toEqual(options); |
| 32 | + }); |
| 33 | + |
| 34 | + it('should make the provider accessible', () => { |
| 35 | + expect(googlePackage.provider).toBeInstanceOf(GoogleProvider); |
| 36 | + }); |
| 37 | + |
| 38 | + describe('hooks', () => { |
| 39 | + let cleanupServerlessDirStub; |
| 40 | + let validateStub; |
| 41 | + let setDefaultsStub; |
| 42 | + let setDeploymentBucketNameStub; |
| 43 | + let prepareDeploymentStub; |
| 44 | + let saveCreateTemplateFileStub; |
| 45 | + let generateArtifactDirectoryNameStub; |
| 46 | + let compileFunctionsStub; |
| 47 | + let mergeServiceResourcesStub; |
| 48 | + let saveUpdateTemplateFileStub; |
| 49 | + |
| 50 | + beforeEach(() => { |
| 51 | + cleanupServerlessDirStub = sinon.stub(googlePackage, 'cleanupServerlessDir') |
| 52 | + .returns(BbPromise.resolve()); |
| 53 | + validateStub = sinon.stub(googlePackage, 'validate') |
| 54 | + .returns(BbPromise.resolve()); |
| 55 | + setDefaultsStub = sinon.stub(googlePackage, 'setDefaults') |
| 56 | + .returns(BbPromise.resolve()); |
| 57 | + setDeploymentBucketNameStub = sinon.stub(googlePackage, 'setDeploymentBucketName') |
| 58 | + .returns(BbPromise.resolve()); |
| 59 | + prepareDeploymentStub = sinon.stub(googlePackage, 'prepareDeployment') |
| 60 | + .returns(BbPromise.resolve()); |
| 61 | + saveCreateTemplateFileStub = sinon.stub(googlePackage, 'saveCreateTemplateFile') |
| 62 | + .returns(BbPromise.resolve()); |
| 63 | + generateArtifactDirectoryNameStub = sinon.stub(googlePackage, 'generateArtifactDirectoryName') |
| 64 | + .returns(BbPromise.resolve()); |
| 65 | + compileFunctionsStub = sinon.stub(googlePackage, 'compileFunctions') |
| 66 | + .returns(BbPromise.resolve()); |
| 67 | + mergeServiceResourcesStub = sinon.stub(googlePackage, 'mergeServiceResources') |
| 68 | + .returns(BbPromise.resolve()); |
| 69 | + saveUpdateTemplateFileStub = sinon.stub(googlePackage, 'saveUpdateTemplateFile') |
| 70 | + .returns(BbPromise.resolve()); |
| 71 | + }); |
| 72 | + |
| 73 | + afterEach(() => { |
| 74 | + googlePackage.cleanupServerlessDir.restore(); |
| 75 | + googlePackage.validate.restore(); |
| 76 | + googlePackage.setDefaults.restore(); |
| 77 | + googlePackage.setDeploymentBucketName.restore(); |
| 78 | + googlePackage.prepareDeployment.restore(); |
| 79 | + googlePackage.saveCreateTemplateFile.restore(); |
| 80 | + googlePackage.generateArtifactDirectoryName.restore(); |
| 81 | + googlePackage.compileFunctions.restore(); |
| 82 | + googlePackage.mergeServiceResources.restore(); |
| 83 | + googlePackage.saveUpdateTemplateFile.restore(); |
| 84 | + }); |
| 85 | + |
| 86 | + it('should run "package:cleanup" promise chain', () => googlePackage |
| 87 | + .hooks['package:cleanup']().then(() => { |
| 88 | + expect(cleanupServerlessDirStub.calledOnce).toEqual(true); |
| 89 | + })); |
| 90 | + |
| 91 | + it('should run "before:package:initialize" promise chain', () => googlePackage |
| 92 | + .hooks['before:package:initialize']().then(() => { |
| 93 | + expect(validateStub.calledOnce).toEqual(true); |
| 94 | + expect(setDefaultsStub.calledAfter(validateStub)).toEqual(true); |
| 95 | + })); |
| 96 | + |
| 97 | + it('should run "package:initialize" promise chain', () => googlePackage |
| 98 | + .hooks['package:initialize']().then(() => { |
| 99 | + expect(setDeploymentBucketNameStub.calledOnce).toEqual(true); |
| 100 | + expect(prepareDeploymentStub.calledAfter(setDeploymentBucketNameStub)).toEqual(true); |
| 101 | + expect(saveCreateTemplateFileStub.calledAfter(prepareDeploymentStub)).toEqual(true); |
| 102 | + })); |
| 103 | + |
| 104 | + it('should run "before:package:compileFunctions" promise chain', () => googlePackage |
| 105 | + .hooks['before:package:compileFunctions']().then(() => { |
| 106 | + expect(generateArtifactDirectoryNameStub.calledOnce).toEqual(true); |
| 107 | + })); |
| 108 | + |
| 109 | + it('should run "package:compileFunctions" promise chain', () => googlePackage |
| 110 | + .hooks['package:compileFunctions']().then(() => { |
| 111 | + expect(compileFunctionsStub.calledOnce).toEqual(true); |
| 112 | + })); |
| 113 | + |
| 114 | + it('should run "package:finalize" promise chain', () => googlePackage |
| 115 | + .hooks['package:finalize']().then(() => { |
| 116 | + expect(mergeServiceResourcesStub.calledOnce).toEqual(true); |
| 117 | + expect(saveUpdateTemplateFileStub.calledAfter(mergeServiceResourcesStub)).toEqual(true); |
| 118 | + })); |
| 119 | + }); |
| 120 | + }); |
| 121 | +}); |
0 commit comments