import React, { useRef } from 'react' import { render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { vi } from 'vitest' import { FilterButtonRemovable, type FilterButtonRemovableProps, type FilterButtonRemovableRefs, } from '.' const user = userEvent.setup() const FilterButtonRemovableWrapper = ({ triggerButtonProps, removeButtonProps, ...restProps }: Partial): JSX.Element => ( ) describe('', () => { it('should use fallback label for remove button if not specified', async () => { render() await waitFor(() => { expect(screen.getByRole('button', { name: 'Remove filter - Desserts' })).toBeVisible() }) }) describe('Refs', () => { it('correctly passes through both button refs', async () => { const onClick = vi.fn() const Wrapper = (): JSX.Element => { const triggerRef = useRef(null) const removeButtonRef = useRef(null) const ref = useRef({ triggerRef, removeButtonRef, }) const handleClick = (): void => { onClick(triggerRef.current?.id, removeButtonRef.current?.id) } return ( <> ) } render() await user.click(screen.getByText('Click me')) expect(onClick).toHaveBeenCalledWith('test__trigger-button', 'test__remove-button') }) }) })