UNPKG

angular-ui-bootstrap-4

Version:

Native AngularJS (Angular) directives for Bootstrap

153 lines (120 loc) 4.3 kB
describe('popover template', function() { var elm, elmBody, scope, elmScope, tooltipScope, $document; // load the popover code beforeEach(module('ui.bootstrap.popover')); // load the template beforeEach(module('uib/template/popover/popover.html')); beforeEach(module('uib/template/popover/popover-template.html')); beforeEach(inject(function($templateCache) { $templateCache.put('myUrl', [200, '<span>{{ myTemplateText }}</span>', {}]); })); beforeEach(inject(function($rootScope, $compile, _$document_) { $document = _$document_; elmBody = angular.element( '<div><span uib-popover-template="templateUrl">Selector Text</span></div>' ); scope = $rootScope; $compile(elmBody)(scope); $document.find('body').append(elmBody); scope.templateUrl = 'myUrl'; scope.$digest(); elm = elmBody.find('span'); elmScope = elm.scope(); tooltipScope = elmScope.$$childTail; })); afterEach(function() { $document.off('keypress'); elmBody.remove(); }); it('should open on click', inject(function() { elm.trigger('click'); tooltipScope.$digest(); expect(tooltipScope.isOpen).toBe(true); expect(elmBody.children().length ).toBe(2); })); it('should not open on click if templateUrl is empty', inject(function() { scope.templateUrl = null; scope.$digest(); elm.trigger('click'); tooltipScope.$digest(); expect(tooltipScope.isOpen).toBe(false); expect(elmBody.children().length).toBe(1); })); it('should show updated text', inject(function() { scope.myTemplateText = 'some text'; elm.trigger('click'); tooltipScope.$digest(); expect(tooltipScope.isOpen).toBe(true); scope.$digest(); expect(elmBody.children().eq(1).text().trim()).toBe('some text'); scope.myTemplateText = 'new text'; scope.$digest(); expect(elmBody.children().eq(1).text().trim()).toBe('new text'); })); it('should hide popover when template becomes empty', inject(function($timeout) { elm.trigger('click'); tooltipScope.$digest(); $timeout.flush(0); expect(tooltipScope.isOpen).toBe(true); scope.templateUrl = ''; scope.$digest(); expect(tooltipScope.isOpen).toBe(false); $timeout.flush(); expect(elmBody.children().length).toBe(1); })); it ('should display the title', inject(function($compile) { elmBody = angular.element( '<div><span uib-popover-template="templateUrl" popover-title="popover title">Selector Text</span></div>' ); $compile(elmBody)(scope); scope.$digest(); elm = elmBody.find('span'); elm.trigger('click'); scope.$digest(); var titleEl = elmBody.find('.popover-title'); expect(titleEl.text()).toBe('popover title'); })); describe('supports options', function() { describe('placement', function() { it('can specify an alternative, valid placement', inject(function($compile) { elmBody = angular.element( '<div><span uib-popover-template="templateUrl" popover-placement="left">Trigger</span></div>' ); $compile(elmBody)(scope); scope.$digest(); elm = elmBody.find('span'); elmScope = elm.scope(); tooltipScope = elmScope.$$childTail; elm.trigger('click'); tooltipScope.$digest(); expect(tooltipScope.isOpen).toBe(true); expect(elmBody.children().length).toBe(2); var ttipElement = elmBody.find('div.popover'); expect(ttipElement).toHaveClass('left'); })); }); describe('class', function() { it('can specify a custom class', inject(function($compile) { elmBody = angular.element( '<div><span uib-popover-template="templateUrl" popover-class="custom">Trigger</span></div>' ); $compile(elmBody)(scope); scope.$digest(); elm = elmBody.find('span'); elmScope = elm.scope(); tooltipScope = elmScope.$$childTail; elm.trigger('click'); tooltipScope.$digest(); expect(tooltipScope.isOpen).toBe(true); expect(elmBody.children().length).toBe(2); var ttipElement = elmBody.find('div.popover'); expect(ttipElement).toHaveClass('custom'); })); }); }); });