UNPKG

@amsterdam/design-system-react

Version:

All React components from the Amsterdam Design System. Use it to compose pages in your website or application.

48 lines (47 loc) 2.4 kB
import { beforeEach, describe, expect, it, vi } from 'vitest'; import { scrollToCurrentSlideOnResize } from './scrollToCurrentSlideOnResize'; import * as scrollUtils from './scrollToSlide'; vi.mock('./scrollToSlide'); describe('scrollToCurrentSlideOnResize', () => { const createRef = (options) => { const { offsetLeft = 0, scrollLeft = 0, withElement = true } = options; const currentSlideElement = withElement ? { offsetLeft } : null; const scrollerElement = withElement ? { children: [currentSlideElement], scrollLeft } : null; return { currentSlideElement, ref: { current: scrollerElement }, }; }; beforeEach(() => { vi.clearAllMocks(); }); it('calls scrollToSlide if the current slide is not in view', () => { const scrollToSlide = vi.fn(); vi.mocked(scrollUtils.scrollToSlide).mockImplementation(scrollToSlide); const { ref } = createRef({ offsetLeft: 100, scrollLeft: 0, withElement: true }); scrollToCurrentSlideOnResize({ currentSlideId: 0, ref }); expect(scrollToSlide).toHaveBeenCalledWith(0, ref); }); it('does not call scrollToSlide if scrollerRef.current is null', () => { const scrollToSlide = vi.fn(); vi.mocked(scrollUtils.scrollToSlide).mockImplementation(scrollToSlide); const { ref } = createRef({ withElement: false }); scrollToCurrentSlideOnResize({ currentSlideId: 0, ref }); expect(scrollToSlide).not.toHaveBeenCalled(); }); it('does not call scrollToSlide if currentSlideElement is null', () => { const scrollToSlide = vi.fn(); vi.mocked(scrollUtils.scrollToSlide).mockImplementation(scrollToSlide); const scrollerElement = { children: [null], scrollLeft: 0 }; const ref = { current: scrollerElement }; scrollToCurrentSlideOnResize({ currentSlideId: 0, ref }); expect(scrollToSlide).not.toHaveBeenCalled(); }); it('does not call scrollToSlide if the slide is already in view', () => { const scrollToSlide = vi.fn(); vi.mocked(scrollUtils.scrollToSlide).mockImplementation(scrollToSlide); const { ref } = createRef({ offsetLeft: 100, scrollLeft: 100, withElement: true }); scrollToCurrentSlideOnResize({ currentSlideId: 0, ref }); expect(scrollToSlide).not.toHaveBeenCalled(); }); });