How can we test a conditions inside a $get in customer provider, I would like to test if else conditions under showSpinner.
I will be enabling my spinnerSerive in config using
spinnerServiceProvider.spinnerEnabled(true)
and toggling my spinner in controller using
spinnerService.showSpinner(true) or spinnerService.showSpinner(false)
angular.module('providerModule', []).provider('spinnerService', [
function() {
var enabled = true;
return {
spinnerEnabled: function(setting) {
if (angular.isDefined(setting)) {
enabled = setting;
return this;
} else {
return enabled;
}
},
$get: function($injector) {
return {
showSpinner: function(option) {
if (enabled) {
if(option){
angular.element(document.body).append('<div id="spinner"><div class="modal-backdrop fade in"></div><div class="load5"><div class="loader" ></div></div></div>');
}
else{
angular.element(document.querySelector('#spinner')).remove();
}
}
}
}
}
}
}
]);
I was able to test whether showSpinner have been called but how to test it is entering if and else block correctly. Below is spec.js
describe('Spinner Provider', function(){
var spinnerServiceObj;
beforeEach(module('providerModule'));
describe('testing spinner', function(){
beforeEach(function() {
inject(function(_spinnerService_,_$rootScope_) {
spinnerServiceObj = _spinnerService_;
$rootScope = _$rootScope_;
$rootScope.showSpinner = jasmine.createSpy(spinnerServiceObj.showSpinner(true))
});
});
it('Should test showSpinner with true and false', function() {
expect($rootScope.showSpinner ).toHaveBeenCalled();
});
})
})