'use strict';
describe('ngShow / ngHide', function() {
var element;
afterEach(function() {
dealoc(element);
});
describe('ngShow', function() {
it('should show and hide an element', inject(function($rootScope, $compile) {
element = jqLite('
');
element = $compile(element)($rootScope);
$rootScope.$digest();
expect(isCssVisible(element)).toEqual(false);
$rootScope.exp = true;
$rootScope.$digest();
expect(isCssVisible(element)).toEqual(true);
}));
it('should make hidden element visible', inject(function($rootScope, $compile) {
element = jqLite('');
element = $compile(element)($rootScope);
expect(isCssVisible(element)).toBe(false);
$rootScope.exp = true;
$rootScope.$digest();
expect(isCssVisible(element)).toBe(true);
}));
});
describe('ngHide', function() {
it('should hide an element', inject(function($rootScope, $compile) {
element = jqLite('');
element = $compile(element)($rootScope);
expect(isCssVisible(element)).toBe(true);
$rootScope.exp = true;
$rootScope.$digest();
expect(isCssVisible(element)).toBe(false);
}));
});
});
describe('ngShow / ngHide - ngAnimate', function() {
var element, window;
var vendorPrefix;
beforeEach(module(function($animationProvider, $provide) {
$provide.value('$window', window = angular.mock.createMockWindow());
return function($sniffer) {
vendorPrefix = '-' + $sniffer.vendorPrefix + '-';
};
}));
afterEach(function() {
dealoc(element);
});
describe('ngShow', function() {
it('should fire off the animator.show and animator.hide animation', inject(function($compile, $rootScope, $sniffer) {
var $scope = $rootScope.$new();
$scope.on = true;
element = $compile(
'' +
'
'
)($scope);
$scope.$digest();
if ($sniffer.supportsTransitions) {
expect(element.attr('class')).toContain('custom-show-setup');
window.setTimeout.expect(1).process();
expect(element.attr('class')).toContain('custom-show-start');
window.setTimeout.expect(1000).process();
} else {
expect(window.setTimeout.queue).toEqual([]);
}
expect(element.attr('class')).not.toContain('custom-show-start');
expect(element.attr('class')).not.toContain('custom-show-setup');
$scope.on = false;
$scope.$digest();
if ($sniffer.supportsTransitions) {
expect(element.attr('class')).toContain('custom-hide-setup');
window.setTimeout.expect(1).process();
expect(element.attr('class')).toContain('custom-hide-start');
window.setTimeout.expect(1000).process();
} else {
expect(window.setTimeout.queue).toEqual([]);
}
expect(element.attr('class')).not.toContain('custom-hide-start');
expect(element.attr('class')).not.toContain('custom-hide-setup');
}));
});
describe('ngHide', function() {
it('should fire off the animator.show and animator.hide animation', inject(function($compile, $rootScope, $sniffer) {
var $scope = $rootScope.$new();
$scope.off = true;
element = $compile(
'' +
'
'
)($scope);
$scope.$digest();
if ($sniffer.supportsTransitions) {
expect(element.attr('class')).toContain('custom-hide-setup');
window.setTimeout.expect(1).process();
expect(element.attr('class')).toContain('custom-hide-start');
window.setTimeout.expect(1000).process();
} else {
expect(window.setTimeout.queue).toEqual([]);
}
expect(element.attr('class')).not.toContain('custom-hide-start');
expect(element.attr('class')).not.toContain('custom-hide-setup');
$scope.off = false;
$scope.$digest();
if ($sniffer.supportsTransitions) {
expect(element.attr('class')).toContain('custom-show-setup');
window.setTimeout.expect(1).process();
expect(element.attr('class')).toContain('custom-show-start');
window.setTimeout.expect(1000).process();
} else {
expect(window.setTimeout.queue).toEqual([]);
}
expect(element.attr('class')).not.toContain('custom-show-start');
expect(element.attr('class')).not.toContain('custom-show-setup');
}));
});
});