import { fireEvent, render } from '@testing-library/react-native' import React from 'react' import { TransactionDetailsEvents } from 'src/analytics/Events' import AppAnalytics from 'src/analytics/AppAnalytics' import { TokenTransactionTypeV2, TransactionStatus } from 'src/transactions/types' import TransactionPrimaryAction from './TransactionPrimaryAction' jest.mock('src/analytics/AppAnalytics') describe('TransactionPrimaryAction', () => { it.each([ [TransactionStatus.Complete, 'transactionDetailsActions.showCompletedTransactionDetails'], [TransactionStatus.Pending, 'transactionDetailsActions.checkPendingTransactionStatus'], [TransactionStatus.Failed, 'transactionDetailsActions.retryFailedTransaction'], ])('renders the correct text when transaction status is %s', (status, expectedText) => { const { getByText } = render( ) expect(getByText(expectedText)).toBeTruthy() }) it('calls the action handler on press', () => { const onPress = jest.fn() const { getByTestId } = render( ) fireEvent.press(getByTestId('test-primary-action')) expect(onPress).toHaveBeenCalled() }) it.each([ [TransactionStatus.Complete, TransactionDetailsEvents.transaction_details_tap_check_status], [TransactionStatus.Pending, TransactionDetailsEvents.transaction_details_tap_details], [TransactionStatus.Failed, TransactionDetailsEvents.transaction_details_tap_retry], ])( 'sends correct analytics event on tap when transaction status is %s', (status, expectedEvent) => { const { getByTestId } = render( ) fireEvent.press(getByTestId('test-primary-action')) expect(AppAnalytics.track).toHaveBeenCalledWith(expectedEvent, { transactionType: TokenTransactionTypeV2.SwapTransaction, transactionStatus: status, }) } ) })