angular-material-npfixed
Version:
The Angular Material project is an implementation of Material Design in Angular.js. This project provides a set of reusable, well-tested, and accessible Material Design UI components. Angular Material is supported internally at Google by the Angular.js, M
87 lines (63 loc) • 2.82 kB
JavaScript
describe('md-autofocus', function() {
var $rootScope, pageScope, element;
beforeEach(module('material.core'));
beforeEach(inject(function(_$rootScope_) {
$rootScope = _$rootScope_;
}));
describe('add/removes the proper classes', function() {
it('supports true', function() {
build('<input id="test" type="text" md-autofocus="true">');
expect(element).toHaveClass('md-autofocus');
});
it('supports false', function() {
build('<input id="test" type="text" md-autofocus="false">');
expect(element).not.toHaveClass('md-autofocus');
});
it('supports variables', function() {
build('<input id="test" type="text" md-autofocus="shouldAutoFocus">');
// By default, we assume an undefined value for the expression is true
expect(element).toHaveClass('md-autofocus');
// Set the expression to false
pageScope.$apply('shouldAutoFocus=false');
expect(element).not.toHaveClass('md-autofocus');
// Set the expression to true
pageScope.$apply('shouldAutoFocus=true');
expect(element).toHaveClass('md-autofocus');
});
it('should properly set the class at initialization', inject(function($compile, $rootScope) {
pageScope = $rootScope.$new();
element = $compile('<input md-autofocus>')(pageScope);
expect(element).toHaveClass('md-autofocus');
}));
it('does not accidentally toggle the class', function() {
build('<input md-autofocus="autofocus">');
// By default, we assume an empty value for the expression is true
expect(element).toHaveClass('md-autofocus');
// Trigger a second digest, to be able to set the scope binding to undefined later again.
pageScope.$apply('autofocus = true');
expect(element).toHaveClass('md-autofocus');
// Set the scope binding to undefined again, which can accidentally toggle the class due to
// the jqLite toggleClass function, which just toggles the class if the value is undefined.
pageScope.$apply('autofocus = undefined');
expect(element).toHaveClass('md-autofocus');
});
it('supports expressions', function() {
build('<input id="test" type="text" md-autofocus="shouldAutoFocus==1">');
// By default, the expression should be false
expect(element).not.toHaveClass('md-autofocus');
// Make the expression false
pageScope.$apply('shouldAutoFocus=0');
expect(element).not.toHaveClass('md-autofocus');
// Make the expression true
pageScope.$apply('shouldAutoFocus=1');
expect(element).toHaveClass('md-autofocus');
});
});
function build(template) {
inject(function($compile) {
pageScope = $rootScope.$new();
element = $compile(template)(pageScope);
pageScope.$apply();
});
}
});