import { render, screen } from '@testing-library/react' import TriggerEventsLimitModal from './index' const mockOnClose = vi.fn() const mockOnUpgrade = vi.fn() const planUpgradeModalMock = vi.fn((props: { show: boolean, title: string, description: string, extraInfo?: React.ReactNode, onClose: () => void, onUpgrade: () => void }) => (
{props.extraInfo}
)) vi.mock('@/app/components/billing/plan-upgrade-modal', () => ({ __esModule: true, // eslint-disable-next-line ts/no-explicit-any default: (props: any) => planUpgradeModalMock(props), })) describe('TriggerEventsLimitModal', () => { beforeEach(() => { vi.clearAllMocks() }) it('passes the trigger usage props to the upgrade modal', () => { render( , ) const modal = screen.getByTestId('plan-upgrade-modal') expect(modal.getAttribute('data-show')).toBe('true') expect(modal.getAttribute('data-title')).toContain('billing.triggerLimitModal.title') expect(modal.getAttribute('data-description')).toContain('billing.triggerLimitModal.description') expect(planUpgradeModalMock).toHaveBeenCalled() const passedProps = planUpgradeModalMock.mock.calls[0][0] expect(passedProps.onClose).toBe(mockOnClose) expect(passedProps.onUpgrade).toBe(mockOnUpgrade) expect(screen.getByText('billing.triggerLimitModal.usageTitle')).toBeInTheDocument() expect(screen.getByText('12')).toBeInTheDocument() expect(screen.getByText('20')).toBeInTheDocument() }) it('renders even when trigger modal is hidden', () => { render( , ) expect(planUpgradeModalMock).toHaveBeenCalled() expect(screen.getByTestId('plan-upgrade-modal').getAttribute('data-show')).toBe('false') }) })