diff --git a/spec/CLI.spec.js b/spec/CLI.spec.js new file mode 100644 index 00000000..08ea2a05 --- /dev/null +++ b/spec/CLI.spec.js @@ -0,0 +1,65 @@ +var commander = require("../src/cli/utils/commander"); + +var definitions = { + "arg0": "PROGRAM_ARG_0", + "arg1": { + env: "PROGRAM_ARG_1", + required: true + }, + "arg2": { + env: "PROGRAM_ARG_2", + action: function(value) { + return parseInt(value); + } + }, + "arg3": {} +} + +describe("commander additions", () => { + + afterEach((done) => { + commander.options = []; + delete commander.arg0; + delete commander.arg1; + delete commander.arg2; + delete commander.arg3; + done(); + }) + + it("should load properly definitions from args", (done) => { + commander.loadDefinitions(definitions); + commander.parse(["node","./CLI.spec.js","--arg0", "arg0Value", "--arg1", "arg1Value", "--arg2", "2", "--arg3", "some"]); + expect(commander.arg0).toEqual("arg0Value"); + expect(commander.arg1).toEqual("arg1Value"); + expect(commander.arg2).toEqual(2); + expect(commander.arg3).toEqual("some"); + done(); + }); + + it("should load properly definitions from env", (done) => { + commander.loadDefinitions(definitions); + commander.parse([], { + "PROGRAM_ARG_0": "arg0ENVValue", + "PROGRAM_ARG_1": "arg1ENVValue", + "PROGRAM_ARG_2": "3", + }); + expect(commander.arg0).toEqual("arg0ENVValue"); + expect(commander.arg1).toEqual("arg1ENVValue"); + expect(commander.arg2).toEqual(3); + done(); + }); + + it("should load properly use args over env", (done) => { + commander.loadDefinitions(definitions); + commander.parse(["node","./CLI.spec.js","--arg0", "arg0Value"], { + "PROGRAM_ARG_0": "arg0ENVValue", + "PROGRAM_ARG_1": "arg1ENVValue", + "PROGRAM_ARG_2": "4", + }); + expect(commander.arg0).toEqual("arg0Value"); + expect(commander.arg1).toEqual("arg1ENVValue"); + expect(commander.arg2).toEqual(4); + done(); + }); + +}) \ No newline at end of file diff --git a/src/cli/cli-definitions.js b/src/cli/cli-definitions.js index 19bfd5e1..a560178c 100644 --- a/src/cli/cli-definitions.js +++ b/src/cli/cli-definitions.js @@ -89,4 +89,4 @@ module.exports = { env: "PARSE_SERVER_LOGGER_ADAPTER", help: "Adapter module for the logging sub-system" } -}; \ No newline at end of file +}; diff --git a/src/cli/utils/commander.js b/src/cli/utils/commander.js index ce074ce8..bc650b13 100644 --- a/src/cli/utils/commander.js +++ b/src/cli/utils/commander.js @@ -3,7 +3,7 @@ var program = require('commander'); var _definitions; var _reverseDefinitions; -program.loadDefinitions = function(definitions, prefix = "") { +program.loadDefinitions = function(definitions) { _definitions = definitions; Object.keys(definitions).reduce(function(program, opt){ if (typeof definitions[opt] == "object") { @@ -28,6 +28,7 @@ program.loadDefinitions = function(definitions, prefix = "") { return object; }, {}); + /* istanbul ignore next */ program.on('--help', function(){ console.log(' Configure From Environment:'); console.log('');