Skip to content

Instantly share code, notes, and snippets.

@taylonr
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taylonr/0b22c11429a65951056b to your computer and use it in GitHub Desktop.
Save taylonr/0b22c11429a65951056b to your computer and use it in GitHub Desktop.
Initial test
describe('User Service...', function(){
var userService,
customerService,
scope;
beforeEach(inject(function(testHelper){
userService = testHelper.setUpMocksWithSpies('UserService');
customerService = testHelper.setUpMocksWithSpies('CustomerService');
scope = testHelper.createScope();
$controller('UserController', {
$scope: scope,
UserService: userService.service,
CustomerService: customerService.service
});
}));
});
describe('User Service...', function(){
beforeEach(module('myApp'));
beforeEach(module(function($provide){
var userService = {
valdate: function(){},
create: function(){}
};
$provide.value('UserService', userService);
var customerService = {
create: function(){},
update: function(){},
delete: function(){},
getJobs: function(){}
};
$provide.value('CustomerService', cusomterService);
}));
beforeEach(inject(function($q, $controller, $rootScope){
var validateDeferred = $q.defer();
spyOn(userService, 'validate').and.returnValue(validateDeferred.promise);
var userCreateDeferred = $q.defer();
spyOn(userService, 'create').and.returnValue(userCreateDeferred.promise);
var createDeferred = $q.defer();
spyOn(customerService, 'create').and.returnValue(createDeferred.promise);
var updateDeferred = $q.defer();
spyOn(customerService, 'update').and.returnValue(updateDeferred.promise);
var deleteDeferred = $q.defer();
spyOn(customerService, 'delete').and.returnValue(deleteDeferred.promise);
var jobsDeferred = $q.defer();
spyOn(customerService, 'getJobs').and.returnValue(jobsDeferred.promise);
var scope = $rootScope.new();
scope.log = {
error: function(){};
log: function(){};
};
spyOn(scope.log, 'error');
$controller('UserController', {
$scope = scope
});
}));
});
beforeEach(module('myApp'));
(function(){
var app = angular.module('myApp');
app.factory('testHelper', ['$q', '$rootScope', function($q, $rootScope){
function createScope(){
var scope = $rootScope.new();
scope.log = {
error: function(){},
warn: function(){}
};
spyOn(scope.log, 'error');
return scope;
}
function setUpMocksWithSpies(serviceName) {
var service = $injector.get(serviceName);
var obj = {
service: {}
};
_(service).keys().each(function (k) {
obj.service[k] = function () { };
var defer = $q.defer();
obj[k] = defer;
spyOn(obj.service, k).and.returnValue(defer.promise);
});
return obj;
}
return {
setUpMocksWithSpies: setUpMocksWithSpies
};
}])
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment