UNPKG

strong-arc

Version:

A visual suite for the StrongLoop API Platform

166 lines (143 loc) 6.87 kB
/* 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); })); });