Skip to content

Commit

Permalink
Fixed api restart
Browse files Browse the repository at this point in the history
  • Loading branch information
johanneswuerbach committed Jan 1, 2016
1 parent 7f22db9 commit cc8e825
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 58 deletions.
51 changes: 9 additions & 42 deletions lib/api.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
var log = require('npmlog');
var Config = require('./config');
var Backbone = require('backbone');
var EventEmitter = require('events').EventEmitter;
var fs = require('fs');
var App = require('./app');
var Server = require('./server');

/*
CLI-level options:
Expand Down Expand Up @@ -45,39 +46,15 @@ var fs = require('fs');
on_exit: Runs before suite exits
*/

var EventLogger = Backbone.Model.extend({
initialize: function(attrs) {
this.set({
name: attrs.name,
allPassed: true,
messages: new Backbone.Collection()
});
},
clear: function() {
this.get('messages').reset([]);
},
hasMessages: function() {
var messages = this.get('messages');
return messages.length > 0;
},
hasResults: function() { return false; },
addMessage: function(type, message, color) {
var messages = this.get('messages');
messages.push({ type: type, text: message, color: color });
},
startTests: function() {}
});

function Api() {}

Api.prototype.setup = function(mode, dependency, finalizer) {
Api.prototype.setup = function(mode, finalizer) {
var self = this;
var App = require(dependency);
var config = this.config = new Config(mode, this.options);
this.config = new Config(mode, this.options);
this.configureLogging();
log.info('Test\'em starting..');
config.read(function() {
self.app = new App(config, finalizer);
this.config.read(function() {
self.app = new App(self.config, finalizer);
self.app.start();
});
};
Expand All @@ -94,23 +71,22 @@ Api.prototype.configureLogging = function() {

Api.prototype.startDev = function(options, finalizer) {
this.options = options;
this.setup('dev', './app', finalizer);
this.setup('dev', finalizer);
};

Api.prototype.restart = function() {
this.app.startTests(function() {});
this.app.triggerRun('Api: restart');
};

Api.prototype.startCI = function(options, finalizer) {
this.options = options;
this.setup('ci', './app', finalizer);
this.setup('ci', finalizer);
};

Api.prototype.startServer = function(options) {
this.options = options;
var config = this.config = new Config('server', this.options);
config.read(function() {
var Server = require('./server');
var server = new Server(config);
server.start();
server.on('server-start', function() {
Expand All @@ -119,13 +95,4 @@ Api.prototype.startServer = function(options) {
});
};

Api.prototype.getLogger = function(name) {
var logger = new EventLogger({ name: name });
return logger;
};

Api.prototype.addTab = function(logger) {
this.app.runners.push(logger);
};

module.exports = Api;
50 changes: 34 additions & 16 deletions tests/api_tests.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,54 @@
var Api = require('../lib/api');
var sinon = require('sinon');
var App = require('../lib/app');
var Config = require('../lib/config');
var sinon = require('sinon');
var expect = require('chai').expect;

var FakeReporter = require('./support/fake_reporter');

describe('Api', function() {
var sandbox;

beforeEach(function() {
sandbox = sinon.sandbox.create();
sandbox.stub(App.prototype, 'initReporter').returns(new FakeReporter());
sandbox.stub(Config.prototype, 'read');
});

afterEach(function() {
sandbox.restore();
});

it('set defaults when using dev mode', function() {
var api = new Api();
api.startDev({parallel: 5, on_exit: 'test'});
expect(api.config.read.callCount).to.equal(1);
expect(api.config.get('on_exit')).to.equal('test');
expect(api.config.get('parallel')).to.equal(-1);
expect(api.config.get('reporter')).to.equal('dev');
describe('new', function() {
it('set defaults when using dev mode', function() {
var api = new Api();
api.startDev({parallel: 5, on_exit: 'test'});
expect(api.config.read.callCount).to.equal(1);
expect(api.config.get('on_exit')).to.equal('test');
expect(api.config.get('parallel')).to.equal(-1);
expect(api.config.get('reporter')).to.equal('dev');
});

it('set defaults when using CI mode', function() {
var api = new Api();
api.startCI({parallel: 5, on_exit: 'test'});
expect(api.config.read.callCount).to.equal(1);
expect(api.config.get('on_exit')).to.equal('test');
expect(api.config.get('parallel')).to.equal(5);
expect(api.config.get('disable_watching')).to.equal(true);
expect(api.config.get('single_run')).to.equal(true);
});
});

it('set defaults when using CI mode', function() {
var api = new Api();
api.startCI({parallel: 5, on_exit: 'test'});
expect(api.config.read.callCount).to.equal(1);
expect(api.config.get('on_exit')).to.equal('test');
expect(api.config.get('parallel')).to.equal(5);
expect(api.config.get('disable_watching')).to.equal(true);
expect(api.config.get('single_run')).to.equal(true);
describe('restart', function() {
it('allows to restart the tests', function(done) {
var api = new Api();
api.startCI({}, function() {});
api.app = new App(api.config, done);
sandbox.stub(api.app, 'stopCurrentRun');
api.restart();
expect(api.app.stopCurrentRun.callCount).to.equal(1);
api.app.exit();
});
});
});

0 comments on commit cc8e825

Please sign in to comment.