ionic
Version:
A tool for creating and developing Ionic Framework mobile apps.
152 lines (133 loc) • 5 kB
JavaScript
var helpers = require('./helpers');
var Project = require('../lib/project');
var rewire = require('rewire');
var logging = require('../lib/logging');
logging.logger = helpers.testingLogger;
var defaultServeOptions = {
address: '0.0.0.0',
appDirectory: '/ionic/app',
browser: undefined,
browserOption: '',
contentSrc: 'www/index.html',
createDocumentRoot: null,
defaultBrowser: undefined,
documentRoot: 'www',
gulpStartupTasks: undefined,
gulpDependantTasks: undefined,
isAddressCmd: false,
launchBrowser: true,
launchLab: undefined,
liveReloadPort: 35729,
port: 8100,
printConsoleLogs: undefined,
printServerLogs: undefined,
proxies: [],
runLivereload: true,
useProxy: false,
watchPatterns: ['www/**/*', '!www/lib/**/*', '!www/**/*.map'],
watchSass: false
};
var serveArgs = {
_: ['serve'],
$0: '/usr/local/bin/ionic'
};
function compareOptions(options) {
expect(options.browser).toBe(defaultServeOptions.browser);
expect(options.browserOption).toBe(defaultServeOptions.browserOption);
expect(options.contentSrc).toBe(defaultServeOptions.contentSrc);
expect(options.createDocumentRoot).toBe(defaultServeOptions.createDocumentRoot);
expect(options.defaultBrowser).toBe(defaultServeOptions.defaultBrowser);
expect(options.documentRoot).toBe(defaultServeOptions.documentRoot);
expect(options.gulpStartupTasks).toBe(defaultServeOptions.gulpStartupTasks);
expect(options.gulpDependantTasks).toBe(defaultServeOptions.gulpDependantTasks);
expect(options.isAddressCmd).toBe(defaultServeOptions.isAddressCmd);
expect(options.launchBrowser).toBe(defaultServeOptions.launchBrowser);
expect(options.launchLab).toBe(defaultServeOptions.launchLab);
expect(options.liveReloadPort).toBe(defaultServeOptions.liveReloadPort);
expect(options.port).toBe(defaultServeOptions.port);
expect(options.printConsoleLogs).toBe(defaultServeOptions.printConsoleLogs);
expect(options.printServerLogs).toBe(defaultServeOptions.printServerLogs);
expect(options.proxies.length).toBe(defaultServeOptions.proxies.length);
expect(options.runLivereload).toBe(defaultServeOptions.runLivereload);
expect(options.useProxy).toBe(defaultServeOptions.useProxy);
expect(options.watchPatterns.length).toBe(defaultServeOptions.watchPatterns.length);
expect(options.watchSass).toBe(defaultServeOptions.watchSass);
}
describe('Serve', function() {
var Serve;
beforeEach(function() {
Serve = rewire('../lib/serve');
serveArgs = {
_: ['serve'],
$0: '/usr/local/bin/ionic'
};
});
it('should have serve defined', function() {
expect(Serve).toBeDefined();
});
it('should have start command require options', function() {
expect(function() {
Serve.start(null);
}).toThrow('You cannot serve without options.');
});
it('should call check for document root', function() {
spyOn(Serve, 'checkForDocumentRoot');
Serve.start(defaultServeOptions);
expect(Serve.checkForDocumentRoot).toHaveBeenCalledWith(defaultServeOptions);
});
describe('#loadSettings', function() {
var project;
beforeEach(function() {
project = Project.wrap('/ionic/project', Project.PROJECT_DEFAULT);
});
it('should parse out options from arg hash', function() {
try {
var options = Serve.loadSettings(serveArgs, project);
compareOptions(options);
} catch (ex) {
console.log(ex);
}
});
it('should have runLivereload to be set to false when flag passed', function() {
serveArgs.nolivereload = true;
var options = Serve.loadSettings(serveArgs, project);
expect(options.runLivereload).toBe(false);
});
});
/*
describe('#runLivereload', function() {
it('should run environment live reload port over options livereload port', function(done) {
var vfsSpy = createSpyObj('vfs', ['watch']);
Serve.__set__('vfs', vfsSpy);
var lrServerSpy = createSpy('lrServer');
lrServerSpy.listen = function(){}; //hack to add spy
spyOn(lrServerSpy, 'listen').andCallFake(function(port, cb) {
cb();
})
var tinylrSpy = createSpy('tinylr').andReturn(lrServerSpy);
Serve.__set__('tinylr', tinylrSpy);
var lrSpy = createSpy('lr').andReturn({});
var th = Serve.__set__('lr', lrSpy);
// console.log('th', th);
// Serve.__set__('connect-livereload', lrSpy);
process.env.CONNECT_LIVE_RELOAD_PORT = 15000;
var app = createSpyObj('app', ['use']);
Q()
.then(function(){
return Serve.runLivereload(defaultServeOptions, app);
})
.then(function() {
var listenArgs = lrServerSpy.listen.argsForCall[0];
// console.log(listenArgs)
expect(listenArgs[0]).toBe('15000');
expect(lrSpy).toHaveBeenCalledWith({port: '15000'});
expect(app.use).toHaveBeenCalledWith({});
})
.catch(function(ex){
expect('this').toBe(ex.stack);
})
.fin(done);
});
});
*/
});