import { FiatAccountType, KycStatus as FiatConnectKycStatus } from '@fiatconnect/fiatconnect-types' import { fireEvent, render } from '@testing-library/react-native' import React from 'react' import { Provider } from 'react-redux' import AppAnalytics from 'src/analytics/AppAnalytics' import { FiatExchangeEvents } from 'src/analytics/Events' import FiatConnectQuote from 'src/fiatExchanges/quotes/FiatConnectQuote' import { CICOFlow } from 'src/fiatExchanges/types' import { FiatConnectQuoteSuccess } from 'src/fiatconnect' import KycPending from 'src/fiatconnect/kyc/KycPending' import getNavigationOptions from 'src/fiatconnect/kyc/getNavigationOptions' import { navigateHome } from 'src/navigator/NavigationService' import { Screens } from 'src/navigator/Screens' import { createMockStore, getMockStackScreenProps } from 'test/utils' import { mockCusdTokenId, mockFiatConnectQuotes } from 'test/values' jest.mock('src/analytics/AppAnalytics') jest.mock('src/fiatconnect/kyc/getNavigationOptions') describe('KycPending', () => { const mockStore = (overrides: any = {}) => { const store = createMockStore({ fiatConnect: { ...overrides, }, }) store.dispatch = jest.fn() return store } const mockQuote = new FiatConnectQuote({ flow: CICOFlow.CashOut, fiatAccountType: FiatAccountType.BankAccount, quote: mockFiatConnectQuotes[1] as FiatConnectQuoteSuccess, tokenId: mockCusdTokenId, }) const mockScreenProps = () => getMockStackScreenProps(Screens.KycPending, { flow: CICOFlow.CashOut, quote: mockQuote, }) beforeEach(() => { jest.clearAllMocks() }) it('sets header options', () => { const store = mockStore() const mockProps = mockScreenProps() render( ) expect(mockProps.navigation.setOptions).toBeCalledWith( getNavigationOptions({ fiatConnectKycStatus: FiatConnectKycStatus.KycPending, quote: mockQuote, }) ) }) it('pressing close button navigates home', () => { const store = mockStore() const mockProps = mockScreenProps() const { queryByTestId, getByTestId } = render( ) expect(queryByTestId('closeButton')).toBeTruthy() fireEvent.press(getByTestId('closeButton')) expect(AppAnalytics.track).toHaveBeenCalledTimes(1) expect(AppAnalytics.track).toHaveBeenCalledWith(FiatExchangeEvents.cico_fc_kyc_status_close, { provider: mockQuote.getProviderId(), flow: CICOFlow.CashOut, fiatConnectKycStatus: FiatConnectKycStatus.KycPending, }) expect(navigateHome).toHaveBeenCalledTimes(1) expect(navigateHome).toHaveBeenCalledWith() }) })