| describe('typeaheadHighlight', function () { |
| |
| var highlightFilter, $log, $sce, logSpy; |
| |
| beforeEach(module('ui.bootstrap.typeahead')); |
| |
| beforeEach(inject(function(_$log_, _$sce_) { |
| $log = _$log_; |
| $sce = _$sce_; |
| logSpy = spyOn($log, 'warn'); |
| })); |
| |
| beforeEach(inject(function(uibTypeaheadHighlightFilter) { |
| highlightFilter = uibTypeaheadHighlightFilter; |
| })); |
| |
| it('should higlight a match', function() { |
| expect($sce.getTrustedHtml(highlightFilter('before match after', 'match'))).toEqual('before <strong>match</strong> after'); |
| }); |
| |
| it('should higlight a match with mixed case', function() { |
| expect($sce.getTrustedHtml(highlightFilter('before MaTch after', 'match'))).toEqual('before <strong>MaTch</strong> after'); |
| }); |
| |
| it('should higlight all matches', function() { |
| expect($sce.getTrustedHtml(highlightFilter('before MaTch after match', 'match'))).toEqual('before <strong>MaTch</strong> after <strong>match</strong>'); |
| }); |
| |
| it('should do nothing if no match', function() { |
| expect($sce.getTrustedHtml(highlightFilter('before match after', 'nomatch'))).toEqual('before match after'); |
| }); |
| |
| it('should do nothing if no or empty query', function() { |
| expect($sce.getTrustedHtml(highlightFilter('before match after', ''))).toEqual('before match after'); |
| expect($sce.getTrustedHtml(highlightFilter('before match after', null))).toEqual('before match after'); |
| expect($sce.getTrustedHtml(highlightFilter('before match after', undefined))).toEqual('before match after'); |
| }); |
| |
| it('issue 316 - should work correctly for regexp reserved words', function() { |
| expect($sce.getTrustedHtml(highlightFilter('before (match after', '(match'))).toEqual('before <strong>(match</strong> after'); |
| }); |
| |
| it('issue 1777 - should work correctly with numeric values', function() { |
| expect($sce.getTrustedHtml(highlightFilter(123, '2'))).toEqual('1<strong>2</strong>3'); |
| }); |
| |
| it('should show a warning when this component is being used unsafely', function() { |
| highlightFilter('<i>before</i> match after', 'match'); |
| expect(logSpy).toHaveBeenCalled(); |
| }); |
| }); |
| |
| /* Deprecation tests below */ |
| |
| describe('typeahead highlightFilter deprecated', function(){ |
| var highlightFilter, $log, $sce, logSpy; |
| |
| beforeEach(module('ui.bootstrap.typeahead')); |
| |
| it('should supress the warning by default', function(){ |
| module(function($provide) { |
| $provide.value('$typeaheadSuppressWarning', true); |
| }); |
| |
| inject(function($compile, $log, $rootScope, typeaheadHighlightFilter, $sce){ |
| spyOn($log, 'warn'); |
| var highlightFilter = typeaheadHighlightFilter; |
| $sce.getTrustedHtml(highlightFilter('before match after', 'match')); |
| expect($log.warn.calls.count()).toBe(0); |
| }); |
| }); |
| |
| it('should decrecate typeaheadHighlightFilter', inject(function($compile, $log, $rootScope, typeaheadHighlightFilter, $sce){ |
| spyOn($log, 'warn'); |
| var highlightFilter = typeaheadHighlightFilter; |
| $sce.getTrustedHtml(highlightFilter('before match after', 'match')); |
| expect($log.warn.calls.count()).toBe(1); |
| expect($log.warn.calls.argsFor(0)).toEqual(['typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead.']); |
| })); |
| }); |