/**
 * @license
 * Copyright Google LLC 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 LLC 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}']`);
    });
  });
}
