import { render, screen } from '@testing-library/react'; import { type Mock, describe, expect, it, vi } from 'vitest'; import { useTransactionContext } from './TransactionProvider'; import { TransactionSponsor } from './TransactionSponsor'; vi.mock('./TransactionProvider', () => ({ useTransactionContext: vi.fn(), })); describe('TransactionSponsor', () => { it('should render correctly', () => { (useTransactionContext as Mock).mockReturnValue({ lifecycleStatus: { statusName: 'init', statusData: null }, paymasterUrl: 'paymasterUrl', }); render(); const element = screen.getByText('Zero transaction fee'); expect(element).toBeInTheDocument(); }); it('should not render if paymasterUrl is null', () => { (useTransactionContext as Mock).mockReturnValue({ lifecycleStatus: { statusName: 'init', statusData: null }, paymasterUrl: null, }); render(); expect(screen.queryByText('Zero transaction fee')).not.toBeInTheDocument(); }); it('should not render if statusName is not init', () => { (useTransactionContext as Mock).mockReturnValue({ lifecycleStatus: { statusName: 'blah', statusData: null }, paymasterUrl: null, }); render(); expect(screen.queryByText('Zero transaction fee')).not.toBeInTheDocument(); }); it('should render if statusName is init', () => { (useTransactionContext as Mock).mockReturnValue({ lifecycleStatus: { statusName: 'init', statusData: null }, paymasterUrl: 'paymasterUrl', }); render(); const element = screen.getByText('Zero transaction fee'); expect(element).toBeInTheDocument(); }); });