UNPKG

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
/* 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(); }); }); }); }); });