import { fireEvent, render, screen } from '@testing-library/react'; import { type Mock, beforeEach, describe, expect, it, vi } from 'vitest'; import { useAppchainBridgeContext } from './AppchainBridgeProvider'; import { AppchainBridgeSuccess } from './AppchainBridgeSuccess'; vi.mock('./AppchainBridgeProvider', () => ({ useAppchainBridgeContext: vi.fn(), })); describe('AppchainBridgeSuccess', () => { const mockHandleOpenExplorer = vi.fn(); const mockHandleResetState = vi.fn(); beforeEach(() => { vi.resetAllMocks(); (useAppchainBridgeContext as Mock).mockReturnValue({ handleOpenExplorer: mockHandleOpenExplorer, handleResetState: mockHandleResetState, }); }); it('renders with default props', () => { render(); expect(screen.getByText('Success!')).toBeInTheDocument(); expect(screen.getByText('View Transaction')).toBeInTheDocument(); expect(screen.getByText('Back to bridge')).toBeInTheDocument(); }); it('renders with custom title and button labels', () => { render( , ); expect(screen.getByText('Custom Success')).toBeInTheDocument(); expect(screen.getByText('View Details')).toBeInTheDocument(); expect(screen.getByText('Return')).toBeInTheDocument(); }); it('calls handleOpenExplorer when primary button is clicked', () => { render(); const primaryButton = screen.getByText('View Transaction'); fireEvent.click(primaryButton); expect(mockHandleOpenExplorer).toHaveBeenCalledTimes(1); }); it('calls handleResetState when secondary button is clicked', () => { render(); const secondaryButton = screen.getByText('Back to bridge'); fireEvent.click(secondaryButton); expect(mockHandleResetState).toHaveBeenCalledTimes(1); }); it('applies correct button styles', () => { render(); const primaryButton = screen .getByText('View Transaction') .closest('button'); const secondaryButton = screen .getByText('Back to bridge') .closest('button'); expect(primaryButton).toHaveClass('w-full', 'rounded-xl'); expect(secondaryButton).toHaveClass('w-full', 'rounded-xl'); }); });