import {describe, expect, it, vi} from 'vitest' import {render, screen, userEvent} from '../../test-utils' import {FavoriteButton} from './favorite-button' describe('FavoriteButton', () => { it('renders unfilled state by default', () => { render() const button = screen.getByRole('button') expect(button).toBeInTheDocument() expect(button).toHaveClass('bg-button-overlay/30') }) it('renders filled state when filled prop is true', () => { render() const button = screen.getByRole('button') expect(button).toHaveClass('bg-primary') }) it('handles click events', async () => { const handleClick = vi.fn() const user = userEvent.setup() render() const button = screen.getByRole('button') await user.click(button) expect(handleClick).toHaveBeenCalledTimes(1) }) it('toggles between filled and unfilled states', async () => { const user = userEvent.setup() let isFilled = false const handleClick = vi.fn(() => { isFilled = !isFilled }) const {rerender} = render( ) const button = screen.getByRole('button') expect(button).toHaveClass('bg-button-overlay/30') await user.click(button) expect(handleClick).toHaveBeenCalledTimes(1) // Rerender with updated filled state rerender() expect(button).toHaveClass('bg-primary') }) })