import * as React from 'react'
import 'react-native'
import { Provider } from 'react-redux'
import PreferencesSubmenu from 'src/account/PreferencesSubmenu'
import { Screens } from 'src/navigator/Screens'
import MockedNavigator from 'test/MockedNavigator'
import { createMockStore } from 'test/utils'
import { fireEvent, render, waitFor } from '@testing-library/react-native'
import { navigate } from 'src/navigator/NavigationService'
import { hapticFeedbackSet } from 'src/app/actions'
describe('PreferencesSubmenu', () => {
beforeEach(() => {
jest.clearAllMocks()
})
it('shows the expected menu items', () => {
const store = createMockStore()
const { getByText } = render(
)
expect(getByText('languageSettings')).toBeTruthy()
expect(getByText('localCurrencySetting')).toBeTruthy()
expect(getByText('hapticFeedback')).toBeTruthy()
})
it('navigates to language select', async () => {
const store = createMockStore()
const { getByText } = render(
)
fireEvent.press(getByText('languageSettings'))
await waitFor(() =>
expect(navigate).toHaveBeenCalledWith(Screens.Language, { nextScreen: 'MockedScreen' })
)
})
it('navigates to currency select', async () => {
const store = createMockStore()
const { getByText } = render(
)
fireEvent.press(getByText('localCurrencySetting'))
await waitFor(() => expect(navigate).toHaveBeenCalledWith(Screens.SelectLocalCurrency))
})
it('toggles haptic feedback', async () => {
const store = createMockStore({})
const { getByText } = render(
)
store.clearActions()
fireEvent(getByText('hapticFeedback'), 'valueChange', true)
expect(store.getActions()).toEqual([hapticFeedbackSet(true)])
})
})