| /** |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| http://www.apache.org/licenses/LICENSE-2.0 |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| */ |
| |
| var rewire = require('rewire'); |
| var cli = rewire('../src/cli'); |
| var Q = require('q'); |
| var cordova_lib = require('cordova-lib'); |
| var events = cordova_lib.events; |
| var cordova = cordova_lib.cordova; |
| var telemetry = require('../src/telemetry'); |
| var path = require('path'); |
| var fs = require('fs'); |
| var logger = require('cordova-common').CordovaLogger.get(); |
| |
| // avoid node complaining of too many event listener added |
| process.setMaxListeners(0); |
| |
| describe('cordova cli', function () { |
| beforeEach(function () { |
| // Event registration is currently process-global. Since all jasmine |
| // tests in a directory run in a single process (and in parallel), |
| // logging events registered as a result of the "--verbose" flag in |
| // CLI testing below would cause lots of logging messages printed out by other specs. |
| |
| // This is required so that fake events chaining works (events.on('log').on('verbose')...) |
| var FakeEvents = function FakeEvents () {}; |
| FakeEvents.prototype.on = function fakeOn () { |
| return new FakeEvents(); |
| }; |
| |
| spyOn(events, 'on').and.returnValue(new FakeEvents()); |
| |
| // Spy and mute output |
| spyOn(logger, 'results'); |
| spyOn(logger, 'warn'); |
| spyOn(console, 'log'); |
| |
| // Prevent accidentally turning telemetry on/off during testing |
| telemetry.turnOn = function () {}; |
| telemetry.turnOff = function () {}; |
| telemetry.track = function () {}; |
| }); |
| |
| describe('options', function () { |
| describe('version', function () { |
| var version = require('../package').version; |
| |
| it('Test#001 : will spit out the version with -v', function (done) { |
| cli(['node', 'cordova', '-v'], function () { |
| expect(logger.results.calls.mostRecent().args[0]).toMatch(version); |
| done(); |
| }); |
| }, 60000); |
| |
| it('Test#002 : will spit out the version with --version', function (done) { |
| cli(['node', 'cordova', '--version'], function () { |
| expect(logger.results.calls.mostRecent().args[0]).toMatch(version); |
| done(); |
| }, 60000); |
| }); |
| |
| it('Test#003 : will spit out the version with -v anywhere', function (done) { |
| cli(['node', 'cordova', 'one', '-v', 'three'], function () { |
| expect(logger.results.calls.mostRecent().args[0]).toMatch(version); |
| done(); |
| }); |
| }, 60000); |
| }); |
| }); |
| |
| describe('Test#004 : project commands other than plugin and platform', function () { |
| beforeEach(function () { |
| spyOn(cordova, 'build').and.returnValue(Q()); |
| }); |
| |
| it('Test#005 : will call command with all arguments passed through', function (done) { |
| cli(['node', 'cordova', 'build', 'blackberry10', '--', '-k', 'abcd1234'], function () { |
| expect(cordova.build).toHaveBeenCalledWith({ platforms: ['blackberry10'], options: { argv: ['-k', 'abcd1234'], fetch: true }, verbose: false, silent: false, browserify: false, fetch: true, nohooks: [ ], searchpath: undefined }); |
| done(); |
| }); |
| }, 60000); |
| |
| it('Test#006 : will consume the first instance of -d', function (done) { |
| cli(['node', 'cordova', '-d', 'build', 'blackberry10', '--', '-k', 'abcd1234', '-d'], function () { |
| expect(cordova.build).toHaveBeenCalledWith({ platforms: ['blackberry10'], options: { verbose: true, argv: ['-k', 'abcd1234', '-d'], fetch: true }, verbose: true, silent: false, browserify: false, fetch: true, nohooks: [ ], searchpath: undefined }); |
| done(); |
| }); |
| }); |
| |
| it('Test#007 : will consume the first instance of --verbose', function (done) { |
| cli(['node', 'cordova', '--verbose', 'build', 'blackberry10', '--', '-k', 'abcd1234', '--verbose'], function () { |
| expect(cordova.build).toHaveBeenCalledWith({ platforms: ['blackberry10'], options: { verbose: true, argv: ['-k', 'abcd1234', '--verbose'], fetch: true }, verbose: true, silent: false, browserify: false, fetch: true, nohooks: [ ], searchpath: undefined }); |
| done(); |
| }); |
| }); |
| |
| it('Test#008 : will consume the first instance of either --verbose or -d', function (done) { |
| cli(['node', 'cordova', '--verbose', 'build', 'blackberry10', '--', '-k', 'abcd1234', '-d'], function () { |
| expect(cordova.build).toHaveBeenCalledWith({ platforms: ['blackberry10'], options: { verbose: true, argv: ['-k', 'abcd1234', '-d'], fetch: true }, verbose: true, silent: false, browserify: false, fetch: true, nohooks: [ ], searchpath: undefined }); |
| done(); |
| }); |
| }); |
| |
| it('Test#009 : will consume the first instance of either --verbose or -d', function (done) { |
| cli(['node', 'cordova', '-d', 'build', 'blackberry10', '--', '-k', 'abcd1234', '--verbose'], function () { |
| expect(cordova.build).toHaveBeenCalledWith({ platforms: ['blackberry10'], options: { verbose: true, argv: ['-k', 'abcd1234', '--verbose'], fetch: true }, verbose: true, silent: false, browserify: false, fetch: true, nohooks: [ ], searchpath: undefined }); |
| done(); |
| }); |
| }); |
| |
| it('Test#010 : will consume the first instance of --silent', function (done) { |
| cli(['node', 'cordova', '--silent', 'build', 'blackberry10', '--', '-k', 'abcd1234', '--silent'], function () { |
| expect(cordova.build).toHaveBeenCalledWith({ platforms: ['blackberry10'], options: { silent: true, argv: ['-k', 'abcd1234', '--silent'], fetch: true }, verbose: false, silent: true, browserify: false, fetch: true, nohooks: [ ], searchpath: undefined }); |
| done(); |
| }); |
| }); |
| }); |
| |
| describe('create', function () { |
| beforeEach(function () { |
| spyOn(cordova, 'create').and.returnValue(Q()); |
| }); |
| |
| it('Test#011 : calls cordova create', function (done) { |
| cli(['node', 'cordova', 'create', 'a', 'b', 'c', '--link-to', 'c:\\personalWWW'], function () { |
| expect(cordova.create).toHaveBeenCalledWith('a', 'b', 'c', jasmine.any(Object), jasmine.any(Object)); |
| done(); |
| }); |
| }); |
| }); |
| |
| describe('plugin', function () { |
| beforeEach(function () { |
| spyOn(cordova, 'plugin').and.returnValue(Q()); |
| }); |
| |
| it('Test#012 : will pass variables', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'facebook', '--variable', 'FOO=foo'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['facebook'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.cli_variables.FOO).toBe('foo'); |
| done(); |
| }); |
| }); |
| |
| it('Test#013 : will support variables with =', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'facebook', '--variable', 'MOTO=DELTA=WAS=HERE'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['facebook'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.cli_variables.MOTO).toBe('DELTA=WAS=HERE'); |
| done(); |
| }); |
| }); |
| |
| it('Test#014 : will pass hook patterns to suppress', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'facebook', '--nohooks', 'before_plugin_add'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['facebook'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.nohooks[0]).toBe('before_plugin_add'); |
| done(); |
| }); |
| }); |
| |
| it('Test #015 : (add) will pass save:true', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'device'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #016 : (add) will pass save:false', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'device', '--nosave'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('Test #017: (remove) will pass save:false', function (done) { |
| cli(['node', 'cordova', 'plugin', 'remove', 'device', '--nosave'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'remove', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('Test #018 : (remove) autosave is default and will pass save:true', function (done) { |
| cli(['node', 'cordova', 'plugin', 'remove', 'device'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'remove', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #019 : (add) will pass fetch:false', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'device', '--nofetch'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('Test #020 : (add) fetch is true by default and will pass fetch:true', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'device'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('(add) will pass save-exact:true', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'device', '--save-exact'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.save_exact).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #021 : (remove) fetch is true by default and will pass fetch:true', function (done) { |
| cli(['node', 'cordova', 'plugin', 'remove', 'device'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'remove', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #022 : (remove) will pass fetch:false', function (done) { |
| cli(['node', 'cordova', 'plugin', 'remove', 'device', '--nofetch'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'remove', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('(add) will pass noprod:true and production:false', function (done) { |
| cli(['node', 'cordova', 'plugin', 'add', 'device', '--noprod'], function () { |
| expect(cordova.plugin).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.plugin.calls.argsFor(0)[2]; |
| expect(opts.production).toBe(false); |
| done(); |
| }); |
| }); |
| }); |
| |
| describe('telemetry', function () { |
| it("Test#023 : skips prompt when user runs 'cordova telemetry X'", function (done) { |
| var wasPromptShown = false; |
| spyOn(telemetry, 'showPrompt').and.callFake(function () { |
| wasPromptShown = true; |
| }); |
| |
| cli(['node', 'cordova', 'telemetry', 'on'], function () { |
| cli(['node', 'cordova', 'telemetry', 'off'], function () { |
| expect(wasPromptShown).toBeFalsy(); |
| done(); |
| }); |
| }); |
| }); |
| |
| it("Test#024 : is NOT collected when user runs 'cordova telemetry on' while NOT opted-in", function (done) { |
| spyOn(telemetry, 'isOptedIn').and.returnValue(false); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', 'telemetry', 'on'], function () { |
| expect(telemetry.track).not.toHaveBeenCalled(); |
| done(); |
| }); |
| }); |
| |
| it("Test#025 : is collected when user runs 'cordova telemetry off' while opted-in", function (done) { |
| spyOn(telemetry, 'isOptedIn').and.returnValue(true); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', 'telemetry', 'off'], function () { |
| expect(telemetry.track).toHaveBeenCalledWith('telemetry', 'off', 'via-cordova-telemetry-cmd', 'successful'); |
| done(); |
| }); |
| }); |
| |
| it('Test#026 : tracks platforms/plugins subcommands', function (done) { |
| spyOn(telemetry, 'isOptedIn').and.returnValue(true); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(true); |
| spyOn(cordova, 'platform').and.returnValue(Q()); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', 'platform', 'add', 'ios'], function () { |
| expect(telemetry.track).toHaveBeenCalledWith('platform', 'add', 'successful'); |
| done(); |
| }); |
| }); |
| |
| it('Test#027 : shows prompt if user neither opted in or out yet', function (done) { |
| spyOn(cordova, 'prepare').and.returnValue(Q()); |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(false); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'isNoTelemetryFlag').and.returnValue(false); |
| spyOn(telemetry, 'showPrompt').and.returnValue(Q(false)); |
| |
| cli(['node', 'cordova', 'prepare'], function () { |
| expect(telemetry.showPrompt).toHaveBeenCalled(); |
| done(); |
| }); |
| }); |
| |
| // note: we override telemetry timeout here so we don't need to wait 30 seconds |
| it('Test#028 : opts-out if prompt times out AND it tracks opt-out', function (done) { |
| // Remove any optOut settings that might have been saved |
| // ... and force prompt to be shown |
| telemetry.clear(); |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(false); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'track'); |
| |
| telemetry.timeoutInSecs = 1; |
| cli(['node', 'cordova', '--version'], function () { |
| if (process.env.CI) { |
| expect(telemetry.isOptedIn()).toBeTruthy(); |
| } else { |
| expect(telemetry.isOptedIn()).toBeFalsy(); |
| } |
| expect(telemetry.track).toHaveBeenCalledWith('telemetry', 'off', 'via-cli-prompt-choice', 'successful'); |
| done(); |
| }); |
| }); |
| |
| it("Test#029 : is NOT collected in CI environments and doesn't prompt", function (done) { |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(true); |
| spyOn(telemetry, 'isOptedIn').and.returnValue(true); |
| spyOn(telemetry, 'isCI').and.returnValue(true); |
| spyOn(telemetry, 'showPrompt'); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', '--version'], function () { |
| expect(telemetry.showPrompt).not.toHaveBeenCalled(); |
| expect(telemetry.track).not.toHaveBeenCalled(); |
| done(); |
| }); |
| }); |
| |
| it("Test#030 : is NOT collected when --no-telemetry flag found and doesn't prompt", function (done) { |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(false); |
| spyOn(telemetry, 'isOptedIn').and.returnValue(true); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'showPrompt'); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', '--version', '--no-telemetry'], function () { |
| expect(telemetry.showPrompt).not.toHaveBeenCalled(); |
| expect(telemetry.track).not.toHaveBeenCalled(); |
| done(); |
| }); |
| }); |
| |
| it('Test#031 : is NOT collected if user opted out', function (done) { |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(true); |
| spyOn(telemetry, 'isOptedIn').and.returnValue(false); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'showPrompt'); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', '--version'], function () { |
| expect(telemetry.showPrompt).not.toHaveBeenCalled(); |
| expect(telemetry.track).not.toHaveBeenCalled(); |
| done(); |
| }); |
| }); |
| |
| it('Test#032 : is collected if user opted in', function (done) { |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(true); |
| spyOn(telemetry, 'isOptedIn').and.returnValue(true); |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'showPrompt'); |
| spyOn(telemetry, 'track'); |
| |
| cli(['node', 'cordova', '--version'], function () { |
| expect(telemetry.showPrompt).not.toHaveBeenCalled(); |
| expect(telemetry.track).toHaveBeenCalled(); |
| done(); |
| }); |
| }); |
| |
| it("Test#033 : track opt-out that happened via 'cordova telemetry off' even if user is NOT opted-in ", function (done) { |
| spyOn(telemetry, 'isCI').and.returnValue(false); |
| spyOn(telemetry, 'isOptedIn').and.returnValue(false); // same as calling `telemetry.turnOff();` |
| spyOn(telemetry, 'hasUserOptedInOrOut').and.returnValue(true); |
| spyOn(telemetry, 'track'); |
| |
| expect(telemetry.isOptedIn()).toBeFalsy(); |
| |
| cli(['node', 'cordova', 'telemetry', 'off'], function () { |
| expect(telemetry.isOptedIn()).toBeFalsy(); |
| expect(telemetry.track).toHaveBeenCalledWith('telemetry', 'off', 'via-cordova-telemetry-cmd', 'successful'); |
| done(); |
| }); |
| }); |
| }); |
| }); |
| |
| describe('raw', function () { |
| var rawInterface = cordova.raw; |
| it('has a raw implementation of previously callable commands', function (done) { |
| Object.keys(rawInterface).forEach(function (key) { |
| expect(typeof rawInterface[key]).toBe('function'); |
| spyOn(cordova, key); |
| rawInterface[key](); // call the raw version |
| expect(cordova[key]).toHaveBeenCalled(); |
| }); |
| done(); |
| }); |
| }); |
| |
| describe('platform', function () { |
| |
| beforeEach(function () { |
| spyOn(cordova, 'platform').and.returnValue(Q()); |
| logger.setLevel('error'); |
| }); |
| |
| it('Test #034 : (add) autosave is the default setting for platform add', function (done) { |
| cli(['node', 'cordova', 'platform', 'add', 'ios'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'add', |
| ['ios'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #035 : (add) platform is not saved when --nosave is passed in', function (done) { |
| cli(['node', 'cordova', 'platform', 'add', 'ios', '--nosave'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'add', |
| ['ios'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('Test #036 : (remove) autosave is the default setting for platform remove', function (done) { |
| cli(['node', 'cordova', 'platform', 'remove', 'ios'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'remove', |
| ['ios'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #037 : (remove) platform is not removed when --nosave is passed in', function (done) { |
| cli(['node', 'cordova', 'platform', 'remove', 'ios', '--nosave'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'remove', |
| ['ios'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.save).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('Test #038 : (add) will pass fetch:false', function (done) { |
| cli(['node', 'cordova', 'platform', 'add', 'device', '--nofetch'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(false); |
| done(); |
| }); |
| }); |
| |
| it('Test #039 : (add) fetch is true by default and will pass fetch:true', function (done) { |
| cli(['node', 'cordova', 'platform', 'add', 'device'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'add', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #040 : (remove) fetch is true by default and will pass fetch:true', function (done) { |
| cli(['node', 'cordova', 'platform', 'remove', 'device'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'remove', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #041 : (remove) will pass fetch:false', function (done) { |
| cli(['node', 'cordova', 'platform', 'remove', 'device', '--nofetch'], function () { |
| expect(cordova.platform).toHaveBeenCalledWith( |
| 'remove', |
| ['device'], |
| jasmine.any(Object) |
| ); |
| var opts = cordova.platform.calls.argsFor(0)[2]; |
| expect(opts.fetch).toBe(false); |
| done(); |
| }); |
| }); |
| }); |
| |
| describe('config', function () { |
| var clirevert; |
| var confrevert; |
| var editorArgs; |
| var cordovaConfig = {}; |
| var confHolder; |
| |
| var confMock = { |
| set: function (key, value) { |
| cordovaConfig[key] = value; |
| }, |
| del: function (key) { |
| delete cordovaConfig[key]; |
| }, |
| path: function () { |
| confHolder = 'Pathcalled'; |
| return 'some/path/cordova-config.json'; |
| }, |
| get: function (key) { |
| confHolder = cordovaConfig[key]; |
| return cordovaConfig[key]; |
| } |
| }; |
| |
| beforeEach(function () { |
| clirevert = cli.__set__('editor', function (path1, cb) { |
| editorArgs = path1(); |
| cb(); |
| }); |
| |
| confrevert = cli.__set__('conf', confMock); |
| logger.setLevel('error'); |
| // spyOn(console, 'log'); |
| }); |
| |
| afterEach(function () { |
| clirevert(); |
| confrevert(); |
| confHolder = undefined; |
| }); |
| |
| it('Test#042 : config set autosave is called with true', function (done) { |
| cli(['node', 'cordova', 'config', 'set', 'autosave', 'true', '--silent'], function () { |
| expect(cordovaConfig.autosave).toBe('true'); |
| done(); |
| }); |
| }); |
| |
| it('Test#043 : config delete autosave is called', function (done) { |
| cli(['node', 'cordova', 'config', 'delete', 'autosave'], function () { |
| expect(cordovaConfig.autosave).toBeUndefined(); |
| done(); |
| }); |
| }); |
| |
| it('Test#044 : config set is called even without value, defaults to true', function (done) { |
| cli(['node', 'cordova', 'config', 'set', 'autosave'], function () { |
| expect(cordovaConfig.autosave).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #045 : config get is called', function (done) { |
| cli(['node', 'cordova', 'config', 'get', 'autosave'], function () { |
| expect(confHolder).toBe(true); |
| done(); |
| }); |
| }); |
| |
| it('Test #046 : config edit is called', function (done) { |
| cli(['node', 'cordova', 'config', 'edit'], function () { |
| expect(path.basename(editorArgs)).toEqual('cordova-config.json'); |
| expect(confHolder).toEqual('Pathcalled'); |
| done(); |
| }); |
| }); |
| |
| it('Test #047 : config ls is called', function (done) { |
| spyOn(fs, 'readFile').and.callFake(function (confPath, cb) { |
| confHolder = confPath(); |
| }); |
| |
| cli(['node', 'cordova', 'config', 'ls'], function () { |
| expect(path.basename(confHolder)).toEqual('cordova-config.json'); |
| done(); |
| }); |
| }); |
| |
| }); |