Created
March 9, 2015 15:25
-
-
Save mrsheepuk/a19ce0ec9dee936a64bd to your computer and use it in GitHub Desktop.
Mocking dependencies for a jasmine test of an angular controller (using controllerAs syntax)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var mockConnApi = null; | |
var mockARF = null; | |
var mockAR = null; | |
var testData = { | |
gwSummary: {}, | |
ifStats: { | |
if_1: {}, | |
if_2: {} | |
}, | |
gwStatsSummary: {}, | |
envStructure: {} | |
} | |
beforeEach(module("app")); | |
beforeEach(function () { | |
module(function($provide) { | |
$provide.factory('autoRefresherFactory', function () { | |
mockARF = jasmine.createSpyObj('autoRefresherFactory',['create','destroy']); | |
mockARF.create.and.callFake(function(name, time, refreshCallback) { | |
var ar = jasmine.createSpyObj('AutoRefresher'+name, ['refresh','start','stop','toggleAutoRefresh','autoRefresh']); | |
ar._autoRefresh = false; | |
ar.refresh.and.callFake(function () { | |
return refreshCallback(); | |
}); | |
ar.start.and.callFake(function () { ar._autoRefresh = true; }); | |
ar.stop.and.callFake(function () { ar._autoRefresh = false; }); | |
ar.toggleAutoRefresh.and.callFake(function (enable) { ar._autoRefresh = enable; }); | |
ar.autoRefresh.and.returnValue(ar._autoRefresh); | |
mockAR = ar; | |
return ar; | |
}); | |
return mockARF; | |
}); | |
$provide.factory('connApi', function ($q) { | |
mockConnApi = jasmine.createSpyObj('connApi',['getGatewaySummary','getInterfaceStats','getGatewayStatsSummary','getStructure']); | |
mockConnApi.getGatewaySummary.and.callFake(function (env) { | |
return $q(function (resolve, reject) { | |
resolve(testData.gwSummary); | |
}); | |
}); | |
mockConnApi.getInterfaceStats.and.callFake(function (env, ifName) { | |
return $q(function (resolve, reject) { | |
resolve(testData.ifStats[ifName]); | |
}); | |
}); | |
mockConnApi.getGatewayStatsSummary.and.callFake(function (env) { | |
return $q(function (resolve, reject) { | |
resolve(testData.gwStatsSummary); | |
}); | |
}); | |
mockConnApi.getStructure.and.callFake(function (env) { | |
return $q(function (resolve, reject) { | |
resolve(testData.envStructure); | |
}); | |
}); | |
return mockConnApi; | |
}); | |
}); | |
}); | |
it('should be createable.', inject(function($controller,$rootScope) { | |
var scope = {}; | |
scope.$on = jasmine.createSpy("$scope.$on"); | |
var stateParams = { env: "TEST" }; | |
var c = $controller('GatewaySummary', {$scope:scope, $stateParams: stateParams}); | |
expect(c).not.toBeNull(); | |
})); | |
it('should set the env property from the state params.', inject(function($controller,$rootScope) { | |
var scope = {}; | |
scope.$on = jasmine.createSpy("$scope.$on"); | |
var stateParams = { env: "TEST" }; | |
var c = $controller('GatewaySummary', {$scope:scope, $stateParams: stateParams}); | |
expect(c.env).toEqual(stateParams.env); | |
})); | |
it('should ask the auto-refresher factory to create an auto-refresher.', inject(function($controller,$rootScope) { | |
var scope = {}; | |
scope.$on = jasmine.createSpy("$scope.$on"); | |
var stateParams = { env: "TEST" }; | |
var c = $controller('GatewaySummary', {$scope:scope, $stateParams: stateParams}); | |
expect(mockARF.create).toHaveBeenCalled(); | |
expect(mockARF.create.calls.mostRecent().args[0]).toEqual('gwSummaryData'); | |
expect(mockARF.create.calls.mostRecent().args[1]).toEqual(5000); | |
// Callback - simply check it's defined. | |
expect(mockARF.create.calls.mostRecent().args[2]).toBeDefined(); | |
})); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment