166 lines
6.7 KiB
JavaScript
166 lines
6.7 KiB
JavaScript
/* License: MIT.
|
|
* Copyright (C) 2013, 2014, Uri Shaked and contributors.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
describe('Provider: usSpinnerConfigProvider', function () {
|
|
beforeEach(module('angularSpinner'));
|
|
|
|
it('should have configurable options', function () {
|
|
module(function (usSpinnerConfigProvider) {
|
|
usSpinnerConfigProvider.setDefaults({color: 'black'});
|
|
});
|
|
|
|
inject(function (usSpinnerConfig) {
|
|
expect(usSpinnerConfig.config.color).toBe('black');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Directive: us-spinner', function () {
|
|
var Spinner;
|
|
|
|
beforeEach(module(function ($provide) {
|
|
Spinner = jasmine.createSpy('Spinner');
|
|
Spinner.prototype.spin = jasmine.createSpy('Spinner.spin');
|
|
Spinner.prototype.stop = jasmine.createSpy('Spinner.stop');
|
|
|
|
$provide.value('$window', {
|
|
location: angular.copy(window.location),
|
|
navigator: angular.copy(window.navigator),
|
|
document: window.document,
|
|
Spinner: Spinner
|
|
});
|
|
}));
|
|
|
|
beforeEach(module('angularSpinner'));
|
|
|
|
it('should create a spinner object', inject(function ($rootScope, $compile) {
|
|
var element = angular.element('<div us-spinner></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner).toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning the spinner automatically', inject(function ($rootScope, $compile) {
|
|
var element = angular.element('<div us-spinner></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin).toHaveBeenCalled();
|
|
expect(Spinner.prototype.stop).not.toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning the second spinner without stopping the first one', inject(function ($rootScope, $compile) {
|
|
var element = angular.element('<div us-spinner></div>');
|
|
element = $compile(element)($rootScope);
|
|
var secondElement = angular.element('<div us-spinner></div>');
|
|
secondElement = $compile(secondElement)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin.calls.count()).toBe(2);
|
|
expect(Spinner.prototype.stop).not.toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should set spinner options as given in attribute', inject(function ($rootScope, $compile) {
|
|
var element = angular.element('<div us-spinner="{width:15}"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner).toHaveBeenCalledWith({width: 15});
|
|
}));
|
|
|
|
it('should update spinner options in response to scope updates', inject(function ($rootScope, $compile) {
|
|
$rootScope.actualWidth = 25;
|
|
var element = angular.element('<div us-spinner="{width:actualWidth}"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner).toHaveBeenCalledWith({width: 25});
|
|
expect(Spinner.prototype.stop).not.toHaveBeenCalled();
|
|
|
|
$rootScope.actualWidth = 72;
|
|
$rootScope.$digest();
|
|
expect(Spinner).toHaveBeenCalledWith({width: 72});
|
|
expect(Spinner.prototype.stop).toHaveBeenCalled();
|
|
expect(Spinner.prototype.spin.calls.count()).toBe(2);
|
|
}));
|
|
|
|
it('should stop the spinner when the scope is destroyed', inject(function ($rootScope, $compile) {
|
|
var scope = $rootScope.$new();
|
|
var element = angular.element('<div us-spinner></div>');
|
|
element = $compile(element)(scope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.stop).not.toHaveBeenCalled();
|
|
scope.$destroy();
|
|
expect(Spinner.prototype.stop).toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should not start spinning automatically', inject(function ($rootScope, $compile) {
|
|
var element = angular.element('<div us-spinner spinner-key="spinner"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin).not.toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning when service trigger the spin event', inject(function ($rootScope, $compile, usSpinnerService) {
|
|
var element = angular.element('<div us-spinner spinner-key="spinner"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin).not.toHaveBeenCalled();
|
|
usSpinnerService.spin('spinner');
|
|
expect(Spinner.prototype.spin).toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning the spinner automatically and stop when service trigger the stop event', inject(function ($rootScope, $compile, usSpinnerService) {
|
|
var element = angular.element('<div us-spinner spinner-key="spinner" spinner-start-active="1"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin).toHaveBeenCalled();
|
|
usSpinnerService.stop('spinner');
|
|
expect(Spinner.prototype.stop).toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should not start spinning the spinner automatically from binding', inject(function ($rootScope, $compile) {
|
|
$rootScope.spinnerActive = false;
|
|
var element = angular.element('<div us-spinner spinner-key="spinner" spinner-start-active="spinnerActive"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin).not.toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning the spinner automatically from binding', inject(function ($rootScope, $compile) {
|
|
$rootScope.spinnerActive = true;
|
|
var element = angular.element('<div us-spinner spinner-key="spinner" spinner-start-active="spinnerActive"></div>');
|
|
element = $compile(element)($rootScope);
|
|
$rootScope.$digest();
|
|
expect(Spinner.prototype.spin).toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning the second spinner without starting the first one', inject(function ($rootScope, $compile, usSpinnerService) {
|
|
var element = angular.element('<div us-spinner spinner-key="spinner"></div>');
|
|
element = $compile(element)($rootScope);
|
|
var secondElement = angular.element('<div us-spinner spinner-key="spinner2"></div>');
|
|
secondElement = $compile(secondElement)($rootScope);
|
|
$rootScope.$digest();
|
|
usSpinnerService.spin('spinner2');
|
|
expect(Spinner.prototype.spin.calls.count()).toBe(1);
|
|
expect(Spinner.prototype.stop).not.toHaveBeenCalled();
|
|
}));
|
|
|
|
it('should start spinning the spinners with the same key', inject(function ($rootScope, $compile, usSpinnerService) {
|
|
$compile('<div us-spinner spinner-key="spinner"></div>')($rootScope);
|
|
$compile('<div us-spinner spinner-key="spinner2"></div>')($rootScope);
|
|
$compile('<div us-spinner spinner-key="spinner"></div>')($rootScope);
|
|
$compile('<div us-spinner spinner-key="spinner2"></div>')($rootScope);
|
|
$compile('<div us-spinner spinner-key="spinner"></div>')($rootScope);
|
|
$rootScope.$digest();
|
|
usSpinnerService.spin('spinner');
|
|
expect(Spinner.prototype.spin.calls.count()).toBe(3);
|
|
expect(Spinner.prototype.stop).not.toHaveBeenCalled();
|
|
usSpinnerService.stop('spinner');
|
|
expect(Spinner.prototype.stop.calls.count()).toBe(3);
|
|
usSpinnerService.spin('spinner2');
|
|
expect(Spinner.prototype.spin.calls.count()).toBe(5);
|
|
usSpinnerService.stop('spinner2');
|
|
expect(Spinner.prototype.stop.calls.count()).toBe(5);
|
|
}));
|
|
});
|