ionic
Version:
A tool for creating and developing Ionic Framework mobile apps.
100 lines (84 loc) • 3.47 kB
JavaScript
;
var Q = require('q');
var optimist = require('optimist');
var rewire = require('rewire');
var upload = rewire('../../lib/ionic/upload');
var IonicAppLib = require('ionic-app-lib');
var Login = IonicAppLib.login;
var Upload = IonicAppLib.upload;
var appLibUtils = IonicAppLib.utils;
var log = IonicAppLib.logging.logger;
// TODO: lets not do this
var LoginTask = require('../../lib/ionic/login');
describe('upload command', function() {
beforeEach(function() {
spyOn(log, 'info');
});
describe('command settings', function() {
it('should have a title', function() {
expect(upload.title).toBeDefined();
expect(upload.title).not.toBeNull();
expect(upload.title.length).toBeGreaterThan(0);
});
it('should have a summary', function() {
expect(upload.summary).toBeDefined();
expect(upload.summary).not.toBeNull();
expect(upload.summary.length).toBeGreaterThan(0);
});
it('should have options', function() {
expect(upload.options).toEqual(jasmine.any(Object));
expect(upload.options['--email|-e']).toEqual(jasmine.any(String));
expect(upload.options['--password|-p']).toEqual(jasmine.any(String));
expect(upload.options['--note']).toEqual(jasmine.any(String));
expect(upload.options['--deploy <channel_tag>']).toEqual(jasmine.any(String));
});
});
describe('run function', function() {
it('should fail if ionic project fails to laod', function(done) {
var processArguments = ['node', 'ionic', 'upload'];
var rawCliArguments = processArguments.slice(2);
var argv = optimist(rawCliArguments).argv;
var error = new Error('oh broken');
spyOn(appLibUtils, 'fail');
spyOn(Login, 'retrieveLogin').andReturn(Q.reject(error));
upload.run({}, argv).then(function() {
expect(appLibUtils.fail).toHaveBeenCalledWith(error);
done();
});
});
it('should ask the user to login if we cannot retrieve a saved session', function(done) {
var processArguments = ['node', 'ionic', 'upload', '--note', 'note text', '--deploy', 'dev'];
var rawCliArguments = processArguments.slice(2);
var argv = optimist(rawCliArguments).argv;
var jar = {
my: 'jar'
};
spyOn(process, 'cwd').andReturn('/my/pwd');
spyOn(Login, 'retrieveLogin').andReturn(Q(false));
spyOn(LoginTask, 'login').andReturn(Q(jar));
spyOn(Upload, 'doUpload').andReturn(Q(true));
upload.run({}, argv).then(function() {
expect(Login.retrieveLogin).toHaveBeenCalled();
expect(LoginTask.login).toHaveBeenCalledWith(argv);
expect(Upload.doUpload).toHaveBeenCalledWith('/my/pwd', jar, 'note text', 'dev');
done();
});
});
it('should retrieve a saved session and use it', function(done) {
var processArguments = ['node', 'ionic', 'upload', '--note', 'note text', '--deploy', 'dev'];
var rawCliArguments = processArguments.slice(2);
var argv = optimist(rawCliArguments).argv;
var jar = {
my: 'jar'
};
spyOn(process, 'cwd').andReturn('/my/pwd');
spyOn(Login, 'retrieveLogin').andReturn(Q(jar));
spyOn(Upload, 'doUpload').andReturn(Q(true));
upload.run({}, argv).then(function() {
expect(Login.retrieveLogin).toHaveBeenCalled();
expect(Upload.doUpload).toHaveBeenCalledWith('/my/pwd', jar, 'note text', 'dev');
done();
});
});
});
});