client-ui
Version:
Testing implementation of nodeJs Backend, angular frontend, and hopefully in a way that this can be deployed to s3/cloudfront
137 lines (132 loc) • 4.73 kB
JavaScript
/* global inject sinon $ */
describe('ServiceRouter::', function() {
var server = 'http://qloans:8080/v1/';
var serviceRouter;
var store;
var $httpBackend;
var $rootScope;
var $timeout;
beforeEach(function() {
angular.mock.module('clientApp', function($provide) {
$provide.constant('rootConstants', {
"server": server,
"production": true,
"scriptUrls": {
device: {
production: "something"
}
}
});
$provide.service('$state', function() {
});
});
});
beforeEach(function() {
inject(function($injector) {
$httpBackend = $injector.get('$httpBackend');
store = $injector.get('aiStorage');
serviceRouter = $injector.get("serviceRouter");
$rootScope = $injector.get('$rootScope');
$timeout = $injector.get("$timeout");
});
});
beforeEach(inject(function(_loan_) {
if (store.get('currentLoan')) {
store.remove('currentLoan');
}
this.sinon = sinon.sandbox.create();
}));
afterEach(function() {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
this.sinon.restore();
});
describe("getScriptContent", function() {
var getScriptStub;
var cbs;
var called;
var self;
beforeEach(function() {
self = this;
cbs = {};
getScriptStub = this.sinon.stub($, "getScript");
called = {done: 0, error: 0};
getScriptStub.returns({
done: function(cb) {
cbs.done = function() {
called.done++;
cb();
};
return this;
},
error: function(cb) {
cbs.error = function() {
called.error++;
cb();
};
return this;
}
});
serviceRouter.maxTries.default = 2;
});
it("Should resolve if first getScript passes", function(done) {
serviceRouter.getScriptContent("something", "device")
.then(function() {
assert.equal(serviceRouter.numTries["device"], 1);
assert.equal(called.done, 1);
assert.equal(called.error, 0);
return done();
}, function() {
assert.equal("a", "b", "Error shouldn't get called");
});
$rootScope.$digest();
assert(getScriptStub.called);
setTimeout(function() {
cbs.done();
$rootScope.$digest();
});
});
it("Should resolve if second getScript passes", function(done) {
serviceRouter.getScriptContent("something", "device")
.then(function() {
assert.equal(serviceRouter.numTries["device"], 2);
assert.equal(called.done, 1, "doneSpy");
assert.equal(called.error, 1, "errorSpy");
return done();
}, function() {
assert.equal("a", "b", "Error shouldn't get called");
});
$rootScope.$digest();
assert(getScriptStub.called);
setTimeout(function() {
cbs.error();
$rootScope.$digest();
setTimeout(function() {
cbs.done();
$rootScope.$digest();
});
});
});
it("Should not resolve if third getScript passes", function(done) {
serviceRouter.getScriptContent("something", "device")
.then(function() {
assert.equal("a", "b", "done shouldn't get called");
}, function() {
assert.equal(serviceRouter.numTries["device"], 3);
assert.equal(called.done, 0, "doneSpy");
assert.equal(called.error, 2, "errorSpy");
return done();
});
$rootScope.$digest();
assert(getScriptStub.called);
setTimeout(function() {
cbs.error();
$rootScope.$digest();
setTimeout(function() {
cbs.error();
$rootScope.$digest();
});
});
});
});
});