describe('ionNavButtons directive', function() {
beforeEach(module('ionic.ui.navBar'));
function setup(attrs, contents) {
var el;
inject(function($compile, $rootScope) {
el = angular.element(''+(contents||'')+'');
el.data('$ionNavBarController', {
leftButtonsElement: angular.element('
'),
rightButtonsElement: angular.element('
')
});
el = $compile(el)($rootScope.$new());
$rootScope.$apply();
});
return el;
}
it('should error without parent navBar', inject(function($compile, $rootScope) {
expect(function() {
$compile('')($rootScope.$new());
}).toThrow();
}));
it('should make the container element end up display:none', function() {
var el = setup();
expect(el.css('display')).toBe('none');
});
it('should transclude contents into left', function() {
var el = setup('side="left" ng-init="items=[1,2]"', '');
var leftButtons = el.controller('ionNavBar').leftButtonsElement.children();
expect(leftButtons.text().trim()).toEqual('12');
el.scope().$apply('items=[1,3,5]');
expect(leftButtons.text().trim()).toEqual('135');
});
it('should transclude contents into right', function() {
var el = setup('side="right" ng-init="items=[1,2]"', '');
var rightButtons = el.controller('ionNavBar').rightButtonsElement.children();
expect(rightButtons.text().trim()).toEqual('12');
el.scope().$apply('items=[1,3,5]');
expect(rightButtons.text().trim()).toEqual('135');
});
it('left should destroy contents on element destroy', inject(function($animate) {
spyOn($animate, 'leave');
var el = setup('side="left" ng-init="items=[1,2]"', '');
var leftButtons = el.controller('ionNavBar').leftButtonsElement.children();
expect(leftButtons.text().trim()).toEqual('12');
el.remove();
expect($animate.leave).toHaveBeenCalled();
expect($animate.leave.mostRecentCall.args[0][0]).toBe(leftButtons[0]);
}));
it('right should destroy contents on element destroy', inject(function($animate) {
spyOn($animate, 'leave');
var el = setup('side="right" ng-init="items=[1,2]"', '');
var rightButtons = el.controller('ionNavBar').rightButtonsElement.children();
expect(rightButtons.text().trim()).toEqual('12');
el.remove();
expect($animate.leave).toHaveBeenCalled();
expect($animate.leave.mostRecentCall.args[0][0]).toBe(rightButtons[0]);
}));
});