diff --git a/packages/overlayscrollbars-react/test/OverlayScrollbarsComponent.test.tsx b/packages/overlayscrollbars-react/test/OverlayScrollbarsComponent.test.tsx index 53cb438..00aed6a 100644 --- a/packages/overlayscrollbars-react/test/OverlayScrollbarsComponent.test.tsx +++ b/packages/overlayscrollbars-react/test/OverlayScrollbarsComponent.test.tsx @@ -1,5 +1,7 @@ import { describe, test, expect, vitest } from 'vitest'; import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { useState } from 'react'; import { OverlayScrollbars } from 'overlayscrollbars'; import { OverlayScrollbarsComponent } from '~/overlayscrollbars-react'; import type { RefObject } from 'react'; @@ -32,6 +34,40 @@ describe('OverlayScrollbarsComponent', () => { expect(screen.getByText(/react/)).toBeInTheDocument(); }); + test('dynamic children', async () => { + const Test = () => { + const [elements, setElements] = useState(1); + return ( + <> + + {elements === 0 ? 'empty' : null} + {[...Array(elements).keys()].map((i) => ( + {i} + ))} + + + + + ); + }; + render(); + + const addBtn = screen.getByText('add'); + const removeBtn = screen.getByText('remove'); + const initialElement = screen.getByText('0'); + expect(initialElement).toBeInTheDocument(); + + const initialElementParent = initialElement.parentElement; + expect(initialElementParent).toBeInTheDocument(); + + userEvent.click(addBtn); + expect((await screen.findByText('1')).parentElement).toBe(initialElementParent); + + userEvent.click(removeBtn); + userEvent.click(removeBtn); + expect(await screen.findByText('empty')).toBe(initialElementParent); + }); + test('className', () => { const { container, rerender } = render(