I know how to write test to GET methods, but what with other methods? PUT, PATCH, DELETE?
This is for example my service method to remove user:
removeOne: function(user) {
var deferred;
console.log(user);
deferred = $q.defer();
if (_.isUndefined(user.id) || _.isNaN(user.id)) {
AlertsServ.logError(err);
deferred.reject(err);
} else {
user.remove().then(function(result) {
AlertsServ.logSuccess('Użytkownik został usunięty');
return deferred.resolve(result);
}, function(err) {
AlertsServ.logError(err);
console.log(err);
return deferred.reject(err);
});
}
return deferred.promise;
}
It should be something like this:
describe('DELETE /users/1', function() {
beforeEach(function() {
return $httpBackend.expect('DELETE', BACKEND_URL + '/users/1').respond(200, 'user1');
});
return describe('removeOne method', function() {
return it('should get one user', function() {
var user;
user = {
id: 1,
routes: 'users'
};
return UserServ.removeOne(user);
});
});
});
but how to define user?
P.S.: How to define in Jasmine/Karma Restangular base url?
Now, with more experience in unit testing, I think that I should mock Restangular and test only if Reastangular are properly called with arguments. I shouldn't add $httpBackend in this tests.
In unit tests, I should check if my services working good, not external libraries. Am I right?