diff --git a/lib/commands/v2new/index.js b/lib/commands/v2new/index.js index 13347318..24ed40fb 100644 --- a/lib/commands/v2new/index.js +++ b/lib/commands/v2new/index.js @@ -92,6 +92,9 @@ function createNonHostedSkill(cmd, profile, doDebug, userInput, callback) { return callback(projectErr); } Messenger.getInstance().info(`Project for skill "${userInput.skillName}" is successfully created at ${projectFolderPath}\n`); + if (cmd.templateUrl) { + return callback(); + } try { // 2.load involving M(Model) component (ResourcesConfig & Manifest) from the downloaded skill project with 'default' profile helper.loadSkillProjectModel(projectFolderPath, 'default'); diff --git a/lib/commands/v2new/wizard-helper.js b/lib/commands/v2new/wizard-helper.js index 66d9ba5e..3d6c93a8 100644 --- a/lib/commands/v2new/wizard-helper.js +++ b/lib/commands/v2new/wizard-helper.js @@ -24,7 +24,7 @@ module.exports = { */ function collectUserCreationProjectInfo(cmd, callback) { const userInput = {}; - ui.selectSkillCodeLanguage((languageErr, language) => { + _getSkillCodeLanguage(cmd, (languageErr, language) => { if (languageErr) { return callback(languageErr); } @@ -62,6 +62,13 @@ function collectUserCreationProjectInfo(cmd, callback) { }); } +function _getSkillCodeLanguage(cmd, callback) { + if (cmd.templateUrl) { + return callback(); + } + ui.selectSkillCodeLanguage((err, res) => callback(err || null, res)); +} + /** * Get template info for non-hosted skill * @param {Object} cmd command object diff --git a/test/unit/commands/v2new/index-test.js b/test/unit/commands/v2new/index-test.js index e00da7c0..1302bf69 100644 --- a/test/unit/commands/v2new/index-test.js +++ b/test/unit/commands/v2new/index-test.js @@ -224,6 +224,25 @@ describe('Commands new test - command class test', () => { }); }); + it('| load skill project model succeeds, with custom template, expect no error thrown', (done) => { + // setup + const TEST_CMD_TEMPLATE = { + profile: TEST_PROFILE, + templateUrl: 'templateUrl' + }; + const TEST_USER_INPUT = {}; + wizardHelper.collectUserCreationProjectInfo.callsArgWith(1, null, TEST_USER_INPUT); + helper.downloadTemplateFromGit.callsArgWith(2, null); + // call + instance.handle(TEST_CMD_TEMPLATE, (err) => { + // verify + expect(err).equal(undefined); + expect(errorStub.callCount).equal(0); + expect(infoStub.callCount).equal(2); + done(); + }); + }); + it('| load skill project model fails, expect error thrown', (done) => { // setup const TEST_USER_INPUT = {}; diff --git a/test/unit/commands/v2new/wizard-helper-test.js b/test/unit/commands/v2new/wizard-helper-test.js index 625dc41a..32d02774 100644 --- a/test/unit/commands/v2new/wizard-helper-test.js +++ b/test/unit/commands/v2new/wizard-helper-test.js @@ -100,7 +100,7 @@ describe('Commands new test - wizard helper test', () => { }); it('| Hosted skills do not support custom template, expect throw error', (done) => { - // setup + // setup const TEST_HOSTED_ERROR = 'No custom template allowed for an Alexa hosted skill.'; ui.selectSkillCodeLanguage.callsArgWith(0, null, TEST_LANGUAGE_RESPONSE); ui.getDeploymentType.callsArgWith(1, null, TEST_HOSTED_DEPLOYMENT);