import { fireEvent, render } from '@testing-library/react-native'
import React from 'react'
import { KeylessBackupEvents } from 'src/analytics/Events'
import AppAnalytics from 'src/analytics/AppAnalytics'
import KeylessBackupIntro from 'src/keylessBackup/KeylessBackupIntro'
import { KeylessBackupFlow, KeylessBackupOrigin } from 'src/keylessBackup/types'
import { navigate } from 'src/navigator/NavigationService'
import { Screens } from 'src/navigator/Screens'
import MockedNavigator from 'test/MockedNavigator'
describe('KeylessBackupIntro', () => {
beforeEach(() => {
jest.clearAllMocks()
})
describe('Setup flow', () => {
it('pressing continue button emits analytics event and navigates to next screen', () => {
const { getByTestId } = render(
)
const continueButton = getByTestId('keylessBackupIntro/Continue')
fireEvent.press(continueButton)
expect(AppAnalytics.track).toHaveBeenCalledWith(KeylessBackupEvents.cab_intro_continue, {
keylessBackupFlow: KeylessBackupFlow.Setup,
origin: KeylessBackupOrigin.Settings,
})
expect(navigate).toHaveBeenCalledWith(Screens.SignInWithEmail, {
keylessBackupFlow: KeylessBackupFlow.Setup,
origin: KeylessBackupOrigin.Settings,
})
})
it('pressing recovery phrase emits analytics event and navigates to recovery phrase screen', () => {
const { getByTestId } = render(
)
const recoveryPhraseLink = getByTestId('keylessBackupIntro/RecoveryPhrase')
fireEvent.press(recoveryPhraseLink)
expect(AppAnalytics.track).toHaveBeenCalledWith(KeylessBackupEvents.cab_setup_recovery_phrase)
expect(navigate).toHaveBeenCalledWith(Screens.BackupIntroduction)
})
})
describe('Restore flow', () => {
it('pressing continue button emits analytics event and navigates to next screen', () => {
const { getByTestId } = render(
)
const continueButton = getByTestId('keylessBackupIntro/Continue')
fireEvent.press(continueButton)
expect(AppAnalytics.track).toHaveBeenCalledWith(KeylessBackupEvents.cab_intro_continue, {
keylessBackupFlow: KeylessBackupFlow.Restore,
origin: KeylessBackupOrigin.Settings,
})
expect(navigate).toHaveBeenCalledWith(Screens.SignInWithEmail, {
keylessBackupFlow: KeylessBackupFlow.Restore,
origin: KeylessBackupOrigin.Settings,
})
})
})
})