angular-progress-button
Version:
Brings buttons with built-in progress meters to AngularJS.
125 lines (84 loc) • 3.51 kB
JavaScript
describe('progress-button directive', function() {
var element, scope, barElement, buttonTextElement, $browser, $timeout
beforeEach(function() {
module('progressButton')
inject(function($rootScope, $compile, _$browser_, _$timeout_ ) {
scope = $rootScope.$new();
$browser = _$browser_;
$timeout = _$timeout_;
})
})
function compileDirective(template) {
element = angular.element(template)
inject(function($rootScope, $compile) {
$compile(element)(scope)
$rootScope.$digest()
barElement = angular.element(element[0].querySelectorAll('.progress-button-bar'))
buttonTextElement = angular.element(element[0].querySelectorAll('.progress-button-text'))
})
scope.$digest();
scope.$apply();
$browser.defer.flush(); // return the queued up data
$timeout.flush(100);
scope.$digest();
scope.$apply();
}
it('shows the button’s inner text if progress = 0', function() {
compileDirective('<progress-button value="progress">Button</progress-button>')
scope.progress = 0
expect(element.text()).toBe('Button')
})
it('shows the default in-progress text if progress = 0.5', function() {
compileDirective('<progress-button value="progress" >Button</progress-button>')
scope.progress = 0.5
scope.$apply();
console.log("Text:" + buttonTextElement.text() );
expect(buttonTextElement.text()).toBe('Loading…')
})
it('shows the default completion text if progress = 1.0', function() {
compileDirective('<progress-button value="progress">Button</progress-button>')
scope.progress = 1.0
scope.$apply()
expect(buttonTextElement.text()).toBe('Complete.')
})
it('shows the specified in-progress text if applicable', function() {
compileDirective('<progress-button value="progress" in-progress="Text">Button</progress-button>')
scope.progress = 0.5
scope.$apply()
expect(buttonTextElement.text()).toBe('Text')
})
it('shows the specified completion text if applicable', function() {
compileDirective('<progress-button value="progress" complete="Text">Button</progress-button>')
scope.progress = 1.0
scope.$apply()
expect(buttonTextElement.text()).toBe('Text')
})
it('sets the bar’s width to 50% if progress = 0.5', function() {
compileDirective('<progress-button value="progress">Button</progress-button>')
scope.progress = 0.5
scope.$apply()
inject(function($timeout) { $timeout.flush() })
expect(barElement.css('width')).toBe('50%')
})
it('sets the bar’s height to 50% if progress = 0.5 and type = vertical', function() {
compileDirective('<progress-button value="progress" type="vertical">Button</progress-button>')
scope.progress = 0.5
scope.$apply()
inject(function($timeout) { $timeout.flush() })
expect(barElement.css('height')).toBe('50%')
})
it('sets the bar’s width to 0% if progress < 0', function() {
compileDirective('<progress-button value="progress">Button</progress-button>')
scope.progress = -1.0
scope.$apply()
inject(function($timeout) { $timeout.flush() })
expect(barElement.css('width')).toBe('0%')
})
it('sets the bar’s width to 100% if progress > 1.0', function() {
compileDirective('<progress-button value="progress">Button</progress-button>')
scope.progress = 2.0
scope.$apply()
inject(function($timeout) { $timeout.flush() })
expect(barElement.css('width')).toBe('100%')
})
})