41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | /** | ||
|  |  * @license | ||
|  |  * Copyright Google Inc. All Rights Reserved. | ||
|  |  * | ||
|  |  * Use of this source code is governed by an MIT-style license that can be | ||
|  |  * found in the LICENSE file at https://angular.io/license
 | ||
|  |  */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /** | ||
|  | * @license | ||
|  | * Copyright Google Inc. All Rights Reserved. | ||
|  | * | ||
|  | * Use of this source code is governed by an MIT-style license that can be | ||
|  | * found in the LICENSE file at https://angular.io/license
 | ||
|  | */ | ||
|  | 
 | ||
|  | import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; | ||
|  | import {BrowserViewportScroller, ViewportScroller} from '../src/viewport_scroller'; | ||
|  | 
 | ||
|  | { | ||
|  |   describe('BrowserViewportScroller', () => { | ||
|  |     let scroller: ViewportScroller; | ||
|  |     let documentSpy: any; | ||
|  |     beforeEach(() => { | ||
|  |       documentSpy = jasmine.createSpyObj('document', ['querySelector']); | ||
|  |       scroller = new BrowserViewportScroller(documentSpy, {scrollTo: 1}, null !); | ||
|  |     }); | ||
|  |     it('escapes invalid characters selectors', () => { | ||
|  |       const invalidSelectorChars = `"' :.[],=`; | ||
|  |       // Double escaped to make sure we match the actual value passed to `querySelector`
 | ||
|  |       const escapedInvalids = `\\"\\' \\:\\.\\[\\]\\,\\=`; | ||
|  |       scroller.scrollToAnchor(`specials=${invalidSelectorChars}`); | ||
|  |       expect(documentSpy.querySelector).toHaveBeenCalledWith(`#specials\\=${escapedInvalids}`); | ||
|  |       expect(documentSpy.querySelector) | ||
|  |           .toHaveBeenCalledWith(`[name='specials\\=${escapedInvalids}']`); | ||
|  |     }); | ||
|  |   }); | ||
|  | } |