Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 915FB200CAF for ; Thu, 22 Jun 2017 19:34:39 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 8F9AF160BD3; Thu, 22 Jun 2017 17:34:39 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 860E5160BF9 for ; Thu, 22 Jun 2017 19:34:38 +0200 (CEST) Received: (qmail 59180 invoked by uid 500); 22 Jun 2017 17:34:37 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 58760 invoked by uid 99); 22 Jun 2017 17:34:36 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Jun 2017 17:34:36 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D55AAE112D; Thu, 22 Jun 2017 17:34:32 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: filmaj@apache.org To: commits@cordova.apache.org Date: Thu, 22 Jun 2017 17:34:45 -0000 Message-Id: <87c487d87e2444c59f0cb9cfe5ca1a22@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [14/14] cordova-lib git commit: first unit test in each plugin submodule, jshint fixes archived-at: Thu, 22 Jun 2017 17:34:39 -0000 first unit test in each plugin submodule, jshint fixes Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/1a289295 Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/1a289295 Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/1a289295 Branch: refs/heads/master Commit: 1a28929564d32d8a85dca039ee8f34656c594dfd Parents: ea8af45 Author: filmaj Authored: Wed Jun 21 10:17:18 2017 -0500 Committer: filmaj Committed: Wed Jun 21 14:58:42 2017 -0500 ---------------------------------------------------------------------- spec-cordova/plugin/add.spec.js | 17 ++++++++++++++++- spec-cordova/plugin/index.spec.js | 24 ++++++++++++++++++++++-- spec-cordova/plugin/list.spec.js | 22 +++++++++++++++++++++- spec-cordova/plugin/remove.spec.js | 11 ++++++++++- spec-cordova/plugin/save.spec.js | 33 +++++++++++++++++++++++++++++++-- spec-cordova/plugin/search.spec.js | 28 ++++++++++++++++++++++++++-- src/cordova/plugin/add.js | 2 +- src/cordova/plugin/search.js | 2 +- 8 files changed, 128 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/spec-cordova/plugin/add.spec.js ---------------------------------------------------------------------- diff --git a/spec-cordova/plugin/add.spec.js b/spec-cordova/plugin/add.spec.js index 4860578..2788d13 100644 --- a/spec-cordova/plugin/add.spec.js +++ b/spec-cordova/plugin/add.spec.js @@ -16,14 +16,29 @@ specific language governing permissions and limitations under the License. */ +// TODO: remove once eslint lands /* eslint-env jasmine */ +/* globals fail */ +var Q = require('q'); var add = require('../../src/cordova/plugin/add'); describe('cordova/plugin/add', function () { + var projectRoot = '/some/path'; + var hook_mock; + beforeEach(function () { + hook_mock = jasmine.createSpyObj('hooks runner mock', ['fire']); + hook_mock.fire.and.returnValue(Q()); + }); describe('main method', function () { describe('error/warning conditions', function () { - it('should error out if at least one plugin is not specified'); + it('should error out if at least one plugin is not specified', function (done) { + add(projectRoot, hook_mock, {plugins: []}).then(function () { + fail('success handler unexpectedly invoked'); + }).fail(function (e) { + expect(e.message).toContain('No plugin specified'); + }).done(done); + }); it('should error out if any mandatory plugin variables are not provided'); }); describe('happy path', function () { http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/spec-cordova/plugin/index.spec.js ---------------------------------------------------------------------- diff --git a/spec-cordova/plugin/index.spec.js b/spec-cordova/plugin/index.spec.js index 479de82..565d6f9 100644 --- a/spec-cordova/plugin/index.spec.js +++ b/spec-cordova/plugin/index.spec.js @@ -16,14 +16,34 @@ specific language governing permissions and limitations under the License. */ +// TODO: remove once eslint lands /* eslint-env jasmine */ +/* globals fail */ -var plugin = require('../../src/cordova/plugin'); +var rewire = require('rewire'); +var plugin = rewire('../../src/cordova/plugin'); +var cordova_util = require('../../src/cordova/util'); describe('cordova/plugin', function () { + var projectRoot = '/some/path'; + var hook_mock = function () {}; + var hook_revert_mock; + beforeEach(function () { + hook_revert_mock = plugin.__set__('HooksRunner', hook_mock); + spyOn(cordova_util, 'cdProjectRoot').and.returnValue(projectRoot); + }); + afterEach(function () { + hook_revert_mock(); + }); describe('error conditions', function () { // TODO: what about search cmd? - it('should require at least one target for add and rm commands'); + it('should require at least one target for add and rm commands', function (done) { + plugin('add', null).then(function () { + fail('success handler unexpectedly invoked'); + }).fail(function (e) { + expect(e.message).toContain('one or more plugins'); + }).done(done); + }); }); describe('handling/massaging of parameters', function () { it('should be able to handle an array of targets'); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/spec-cordova/plugin/list.spec.js ---------------------------------------------------------------------- diff --git a/spec-cordova/plugin/list.spec.js b/spec-cordova/plugin/list.spec.js index 0bf27b4..d836418 100644 --- a/spec-cordova/plugin/list.spec.js +++ b/spec-cordova/plugin/list.spec.js @@ -16,12 +16,32 @@ specific language governing permissions and limitations under the License. */ +// TODO: remove once eslint lands /* eslint-env jasmine */ +/* globals fail */ +var Q = require('q'); var list = require('../../src/cordova/plugin/list'); +var plugin_util = require('../../src/cordova/plugin/util'); describe('cordova/plugin/list', function () { - it('should fire the before_plugin_ls hook'); + var projectRoot = '/some/path'; + var hook_mock; + var fake_plugins_list = [{id: 'VRPlugin'}, {id: 'MastodonSocialPlugin'}]; + beforeEach(function () { + hook_mock = jasmine.createSpyObj('hooks runner mock', ['fire']); + hook_mock.fire.and.returnValue(Q()); + spyOn(plugin_util, 'getInstalledPlugins').and.returnValue(Q.resolve(fake_plugins_list)); + }); + it('should fire the before_plugin_ls hook', function (done) { + var opts = {important: 'options'}; + list(projectRoot, hook_mock, opts).then(function () { + expect(hook_mock.fire).toHaveBeenCalledWith('before_plugin_ls', opts); + }).fail(function (e) { + fail('fail handler unexpectedly invoked'); + console.error(e); + }).done(done); + }); it('should emit a "no plugins added" result if there are no installed plugins'); it('should warn if plugin list contains dependencies that are missing'); it('should warn if plugin list contains a plugin dependency that does not have a version satisfied'); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/spec-cordova/plugin/remove.spec.js ---------------------------------------------------------------------- diff --git a/spec-cordova/plugin/remove.spec.js b/spec-cordova/plugin/remove.spec.js index cbe1747..ab7b572 100644 --- a/spec-cordova/plugin/remove.spec.js +++ b/spec-cordova/plugin/remove.spec.js @@ -16,13 +16,22 @@ specific language governing permissions and limitations under the License. */ +// TODO: remove this once eslint lands /* eslint-env jasmine */ +/* globals fail */ var remove = require('../../src/cordova/plugin/remove'); describe('cordova/plugin/remove', function () { + var projectRoot = '/some/path'; describe('error/warning conditions', function () { - it('should require that a plugin be provided'); + it('should require that a plugin be provided', function (done) { + remove(projectRoot, null).then(function () { + fail('success handler unexpectedly invoked'); + }).fail(function (e) { + expect(e.message).toContain('No plugin specified'); + }).done(done); + }); it('should require that a provided plugin be installed in the current project'); }); describe('happy path', function () { http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/spec-cordova/plugin/save.spec.js ---------------------------------------------------------------------- diff --git a/spec-cordova/plugin/save.spec.js b/spec-cordova/plugin/save.spec.js index c2b5f68..1fb8b46 100644 --- a/spec-cordova/plugin/save.spec.js +++ b/spec-cordova/plugin/save.spec.js @@ -16,13 +16,42 @@ specific language governing permissions and limitations under the License. */ +// TODO: remove this once eslint lands /* eslint-env jasmine */ +/* globals fail */ -var save = require('../../src/cordova/plugin/save'); +var rewire = require('rewire'); +var fs = require('fs'); +var save = rewire('../../src/cordova/plugin/save'); +var cordova_util = require('../../src/cordova/util'); describe('cordova/plugin/save', function () { + var projectRoot = '/some/path'; + var cfg_parser_mock = function () {}; + var cfg_parser_revert_mock; + var fake_plugin_list = ['VRPlugin', 'MastodonSocialPlugin']; + var fake_fetch_json = {'VRPlugin': {}, 'MastodonSocialPlugin': {}}; + beforeEach(function () { + cfg_parser_mock.prototype = jasmine.createSpyObj('config parser protytpe mock', ['getPluginIdList', 'removePlugin']); + cfg_parser_mock.prototype.getPluginIdList.and.returnValue(fake_plugin_list); + cfg_parser_revert_mock = save.__set__('ConfigParser', cfg_parser_mock); + spyOn(cordova_util, 'projectConfig').and.returnValue(projectRoot + '/config.xml'); + spyOn(fs, 'readFileSync').and.returnValue(JSON.stringify(fake_fetch_json)); + }); + afterEach(function () { + cfg_parser_revert_mock(); + }); describe('error conditions', function () { - it('should explode if there was an issue parsing or reading from fetch.json file'); + it('should explode if there was an issue parsing or reading from fetch.json file', function (done) { + fs.readFileSync.and.callFake(function () { + throw new Error('massive explosions during file reading!'); + }); + save(projectRoot).then(function () { + fail('unexpected success handler invoked'); + }).fail(function (e) { + expect(e).toContain('massive explosions'); + }).done(done); + }); }); describe('happy path', function () { it('should remove all plugins from config.xml and re-add new ones based on those retrieved from fetch.json'); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/spec-cordova/plugin/search.spec.js ---------------------------------------------------------------------- diff --git a/spec-cordova/plugin/search.spec.js b/spec-cordova/plugin/search.spec.js index b940eeb..aa3ba54 100644 --- a/spec-cordova/plugin/search.spec.js +++ b/spec-cordova/plugin/search.spec.js @@ -16,12 +16,36 @@ specific language governing permissions and limitations under the License. */ +// TODO: remove once eslint lands /* eslint-env jasmine */ +/* globals fail */ -var search = require('../../src/cordova/plugin/search'); +var Q = require('q'); +var rewire = require('rewire'); +var search = rewire('../../src/cordova/plugin/search'); describe('cordova/plugin/search', function () { - it('should fire the before_plugin_search hook'); + var hook_mock; + var opener_mock; + var opener_revert_mock; + beforeEach(function () { + hook_mock = jasmine.createSpyObj('hooks runner mock', ['fire']); + hook_mock.fire.and.returnValue(Q()); + opener_mock = jasmine.createSpy('opener mock'); + opener_revert_mock = search.__set__('opener', opener_mock); + }); + afterEach(function () { + opener_revert_mock(); + }); + it('should fire the before_plugin_search hook', function (done) { + var opts = {important: 'options', plugins: []}; + search(hook_mock, opts).then(function () { + expect(hook_mock.fire).toHaveBeenCalledWith('before_plugin_search', opts); + }).fail(function (e) { + fail('fail handler unexpectedly invoked'); + console.error(e); + }).done(done); + }); it('should open a link to cordova.apache.org/plugins if no plugins are provided as parameter'); it('should open a link to cordova.apache.org/plugins, providing the plugins passed in as a query-string parameter'); it('should fire the after_plugin_search hook'); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/src/cordova/plugin/add.js ---------------------------------------------------------------------- diff --git a/src/cordova/plugin/add.js b/src/cordova/plugin/add.js index 3b801d0..4e975d3 100644 --- a/src/cordova/plugin/add.js +++ b/src/cordova/plugin/add.js @@ -30,7 +30,7 @@ var CordovaError = require('cordova-common').CordovaError; var PluginInfoProvider = require('cordova-common').PluginInfoProvider; var events = require('cordova-common').events; var shell = require('shelljs'); -var Q = require('Q'); +var Q = require('q'); var path = require('path'); var fs = require('fs'); var semver = require('semver'); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1a289295/src/cordova/plugin/search.js ---------------------------------------------------------------------- diff --git a/src/cordova/plugin/search.js b/src/cordova/plugin/search.js index e439c3b..0108e4e 100644 --- a/src/cordova/plugin/search.js +++ b/src/cordova/plugin/search.js @@ -18,7 +18,7 @@ */ var opener = require('opener'); -var Q = require('Q'); +var Q = require('q'); module.exports = search; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org For additional commands, e-mail: commits-help@cordova.apache.org