UNPKG

@amsterdam/design-system-react

Version:

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

43 lines (42 loc) 2.03 kB
import { describe, expect, it, vi } from 'vitest'; import { setCurrentSlideIdToVisibleSlide } from './setCurrentSlideIdToVisibleSlide'; describe('setCurrentSlideIdToVisibleSlide', () => { it('calls setCurrentSlideId with the index of the intersecting element', () => { const setCurrentSlideId = vi.fn(); const element1 = {}; const element2 = {}; const ref = { current: { children: [element1, element2] } }; const observations = [ { isIntersecting: false, target: element1 }, { isIntersecting: true, target: element2 }, ]; setCurrentSlideIdToVisibleSlide({ observations, ref, setCurrentSlideId }); expect(setCurrentSlideId).toHaveBeenCalledWith(1); }); it('does not call setCurrentSlideId if no element is intersecting', () => { const setCurrentSlideId = vi.fn(); const element1 = {}; const element2 = {}; const ref = { current: { children: [element1, element2] } }; const observations = [ { isIntersecting: false, target: element1 }, { isIntersecting: false, target: element2 }, ]; setCurrentSlideIdToVisibleSlide({ observations, ref, setCurrentSlideId }); expect(setCurrentSlideId).not.toHaveBeenCalled(); }); it('returns undefined for empty children array', () => { const setCurrentSlideId = vi.fn(); const ref = { current: { children: [] } }; const observations = [{ isIntersecting: true, target: {} }]; const result = setCurrentSlideIdToVisibleSlide({ observations, ref, setCurrentSlideId }); expect(result).toBeUndefined(); }); it('returns undefined if ref.current is null', () => { const setCurrentSlideId = vi.fn(); const ref = { current: null }; const observations = [{ isIntersecting: true, target: {} }]; const result = setCurrentSlideIdToVisibleSlide({ observations, ref, setCurrentSlideId }); expect(result).toBeUndefined(); }); });