The tests are passing!!!

This commit is contained in:
Alex DeBrie 2017-09-22 20:23:28 +00:00
parent 059d690cdc
commit c8b6de516f
2 changed files with 123 additions and 15 deletions

View File

@ -25,18 +25,21 @@ class Print {
print() {
this.serverless.variables.options = this.serverless.processedInput.options;
this.serverless.variables.loadVariableSyntax();
getServerlessConfigFile(process.cwd())
return getServerlessConfigFile(process.cwd())
.then((data) => {
const conf = data;
// Need to delete variableSyntax to avoid potential matching errors
if (conf.provider.variableSyntax) {
delete conf.provider.variableSyntax;
}
return this.serverless.variables.populateObject(conf);
}).then((data) => this.serverless.cli.consoleLog(YAML.dump(data)));
return BbPromise.resolve();
return conf;
})
.then((data) => {
return this.serverless.variables.populateObject(data).then(() => { return data; })
})
.then((data) => this.serverless.cli.consoleLog(YAML.dump(data)));
}
}
module.exports = Print;

View File

@ -4,6 +4,7 @@ const expect = require('chai').expect;
const sinon = require('sinon');
const proxyquire = require('proxyquire');
const Serverless = require('../../Serverless');
const AwsProvider = require('../aws/provider/awsProvider');
const CLI = require('../../classes/CLI');
const YAML = require('js-yaml');
@ -12,13 +13,9 @@ describe('Print', () => {
let print;
let serverless;
let getServerlessConfigFileStub;
let consoleLogSpy;
let sandbox;
beforeEach(() => {
sandbox = sinon.sandbox.create();
consoleLogSpy = sandbox.spy(console, 'log');
getServerlessConfigFileStub = sandbox.stub();
getServerlessConfigFileStub = sinon.stub();
const printPlugin = proxyquire('./print.js', {
'../../utils/getServerlessConfigFile': getServerlessConfigFileStub,
});
@ -29,11 +26,15 @@ describe('Print', () => {
}
serverless.cli = new CLI(serverless);
print = new printPlugin(serverless);
print.serverless.cli = {
consoleLog: sinon.spy(),
};
});
afterEach(() => {
consoleLogSpy.restore();
})
//print.serverless.cli.consoleLog.restore();
serverless.service.provider.variableSyntax = '\\${([ ~:a-zA-Z0-9._\'",\\-\\/\\(\\)]+?)}'
});
it('should print standard config', () => {
const conf = {
@ -44,13 +45,117 @@ describe('Print', () => {
}
getServerlessConfigFileStub.resolves(conf)
print.print().then(() => {
const message = consoleLogSpy.args.join();
return print.print().then(() => {
const message = print.serverless.cli.consoleLog.args.join();
expect(getServerlessConfigFileStub.calledOnce).to.equal(true);
expect(console.log.calledOnce).to.equal(true);
expect(print.serverless.cli.consoleLog.called).to.be.equal(true);
expect(message).to.have.string(YAML.dump(conf));
})
});
it('should resolve command line variables', () => {
const conf = {
service: 'my-service',
provider: {
name: 'aws',
stage: '${opt:stage}'
}
}
getServerlessConfigFileStub.resolves(conf)
serverless.processedInput = {
commands: [ 'print' ],
options: { stage: 'dev', region: undefined }
}
const expected = {
service: 'my-service',
provider: {
name: 'aws',
stage: 'dev'
}
}
return print.print().then(() => {
const message = print.serverless.cli.consoleLog.args.join();
expect(getServerlessConfigFileStub.calledOnce).to.equal(true);
expect(print.serverless.cli.consoleLog.called).to.be.equal(true);
expect(message).to.equal(YAML.dump(expected));
})
});
it('should resolve using custom variable syntax', () => {
const conf = {
service: 'my-service',
provider: {
name: 'aws',
stage: '${{opt:stage}}'
}
}
serverless.service.provider.variableSyntax = "\\${{([ ~:a-zA-Z0-9._\\'\",\\-\\/\\(\\)]+?)}}";
getServerlessConfigFileStub.resolves(conf);
serverless.processedInput = {
commands: [ 'print' ],
options: { stage: 'dev', region: undefined }
}
const expected = {
service: 'my-service',
provider: {
name: 'aws',
stage: 'dev'
}
}
return print.print().then(() => {
const message = print.serverless.cli.consoleLog.args.join();
expect(getServerlessConfigFileStub.calledOnce).to.equal(true);
expect(print.serverless.cli.consoleLog.called).to.be.equal(true);
expect(message).to.equal(YAML.dump(expected));
})
});
it('should resolve custom variables', () => {
const conf = {
service: 'my-service',
custom: { region: 'us-east-1' },
provider: {
name: 'aws',
stage: '${opt:stage}',
region: '${self:custom.region}'
}
}
getServerlessConfigFileStub.resolves(conf)
serverless.processedInput = {
commands: [ 'print' ],
options: { stage: 'dev', region: undefined }
}
serverless.service.custom = { region: 'us-east-1' }
const expected = {
service: 'my-service',
custom: {
region: 'us-east-1',
},
provider: {
name: 'aws',
stage: 'dev',
region: 'us-east-1'
}
}
return print.print().then(() => {
const message = print.serverless.cli.consoleLog.args.join();
expect(getServerlessConfigFileStub.calledOnce).to.equal(true);
expect(print.serverless.cli.consoleLog.called).to.be.equal(true);
expect(message).to.equal(YAML.dump(expected));
})
});
});