diff options
Diffstat (limited to 'spec/frontend/lib/utils/resize_observer_spec.js')
-rw-r--r-- | spec/frontend/lib/utils/resize_observer_spec.js | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/spec/frontend/lib/utils/resize_observer_spec.js b/spec/frontend/lib/utils/resize_observer_spec.js index 419aff28935..6560562f204 100644 --- a/spec/frontend/lib/utils/resize_observer_spec.js +++ b/spec/frontend/lib/utils/resize_observer_spec.js @@ -19,16 +19,11 @@ describe('ResizeObserver Utility', () => { jest.spyOn(document.documentElement, 'scrollTo'); - setFixtures(`<div id="content-body"><div class="target">element to scroll to</div></div>`); + setFixtures(`<div id="content-body"><div id="note_1234">note to scroll to</div></div>`); - const target = document.querySelector('.target'); + const target = document.querySelector('#note_1234'); jest.spyOn(target, 'getBoundingClientRect').mockReturnValue({ top: 200 }); - - observer = scrollToTargetOnResize({ - target: '.target', - container: '#content-body', - }); }); afterEach(() => { @@ -38,21 +33,22 @@ describe('ResizeObserver Utility', () => { describe('Observer behavior', () => { it('returns null for empty target', () => { observer = scrollToTargetOnResize({ - target: '', + targetId: '', container: '#content-body', }); expect(observer).toBe(null); }); - it('returns ResizeObserver instance', () => { - expect(observer).toBeInstanceOf(ResizeObserver); - }); + it('does not scroll if target does not exist', () => { + observer = scrollToTargetOnResize({ + targetId: 'some_imaginary_id', + container: '#content-body', + }); - it('scrolls body so anchor is just below sticky header (contentTop)', () => { triggerResize(); - expect(document.documentElement.scrollTo).toHaveBeenCalledWith({ top: 110 }); + expect(document.documentElement.scrollTo).not.toHaveBeenCalled(); }); const interactionEvents = ['mousedown', 'touchstart', 'keydown', 'wheel']; @@ -64,5 +60,24 @@ describe('ResizeObserver Utility', () => { expect(document.documentElement.scrollTo).not.toHaveBeenCalledWith(); }); + + describe('with existing target', () => { + beforeEach(() => { + observer = scrollToTargetOnResize({ + targetId: 'note_1234', + container: '#content-body', + }); + }); + + it('returns ResizeObserver instance', () => { + expect(observer).toBeInstanceOf(ResizeObserver); + }); + + it('scrolls body so anchor is just below sticky header (contentTop)', () => { + triggerResize(); + + expect(document.documentElement.scrollTo).toHaveBeenCalledWith({ top: 110 }); + }); + }); }); }); |