'use strict';
describe('boolean attr directives', function() {
var element;
afterEach(function() {
dealoc(element);
});
it('should properly evaluate 0 as false', inject(function($rootScope, $compile) {
// jQuery does not treat 0 as false, when setting attr()
element = $compile('')($rootScope)
$rootScope.isDisabled = 0;
$rootScope.$digest();
expect(element.attr('disabled')).toBeFalsy();
$rootScope.isDisabled = 1;
$rootScope.$digest();
expect(element.attr('disabled')).toBeTruthy();
}));
it('should bind disabled', inject(function($rootScope, $compile) {
element = $compile('')($rootScope)
$rootScope.isDisabled = false;
$rootScope.$digest();
expect(element.attr('disabled')).toBeFalsy();
$rootScope.isDisabled = true;
$rootScope.$digest();
expect(element.attr('disabled')).toBeTruthy();
}));
it('should bind checked', inject(function($rootScope, $compile) {
element = $compile('')($rootScope)
$rootScope.isChecked = false;
$rootScope.$digest();
expect(element.attr('checked')).toBeFalsy();
$rootScope.isChecked=true;
$rootScope.$digest();
expect(element.attr('checked')).toBeTruthy();
}));
it('should bind selected', inject(function($rootScope, $compile) {
element = $compile('')($rootScope)
jqLite(document.body).append(element)
$rootScope.isSelected=false;
$rootScope.$digest();
expect(element.children()[1].selected).toBeFalsy();
$rootScope.isSelected=true;
$rootScope.$digest();
expect(element.children()[1].selected).toBeTruthy();
}));
it('should bind readonly', inject(function($rootScope, $compile) {
element = $compile('')($rootScope)
$rootScope.isReadonly=false;
$rootScope.$digest();
expect(element.attr('readOnly')).toBeFalsy();
$rootScope.isReadonly=true;
$rootScope.$digest();
expect(element.attr('readOnly')).toBeTruthy();
}));
it('should bind open', inject(function($rootScope, $compile) {
element = $compile(' ')($rootScope)
$rootScope.isOpen=false;
$rootScope.$digest();
expect(element.attr('open')).toBeFalsy();
$rootScope.isOpen=true;
$rootScope.$digest();
expect(element.attr('open')).toBeTruthy();
}));
describe('multiple', function() {
it('should NOT bind to multiple via ngMultiple', inject(function($rootScope, $compile) {
element = $compile('')($rootScope)
$rootScope.isMultiple=false;
$rootScope.$digest();
expect(element.attr('multiple')).toBeFalsy();
$rootScope.isMultiple='multiple';
$rootScope.$digest();
expect(element.attr('multiple')).toBeFalsy(); // ignore
}));
it('should throw an exception if binding to multiple attribute', inject(function($rootScope, $compile) {
if (msie < 9) return; //IE8 doesn't support biding to boolean attributes
expect(function() {
$compile('')
}).toThrow('[$compile:selmulti] Binding to the \'multiple\' attribute is not supported. ' +
'Element: