Skip to content

Instantly share code, notes, and snippets.

@mrsheepuk
Created March 9, 2015 15:25
Show Gist options
  • Save mrsheepuk/a19ce0ec9dee936a64bd to your computer and use it in GitHub Desktop.
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)
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