import { fireEvent, render } from '@testing-library/react-native'
import React from 'react'
import { Platform } from 'react-native'
import { Provider } from 'react-redux'
import { getDynamicConfigParams } from 'src/statsig'
import WebViewScreen from 'src/webview/WebViewScreen'
import MockedNavigator from 'test/MockedNavigator'
import { createMockStore } from 'test/utils'
jest.mock('src/statsig')
const dappUri = 'https://somedapp.url'
describe('WebViewScreen', () => {
beforeEach(() => {
jest.mocked(getDynamicConfigParams).mockReturnValue({
disabledMediaPlaybackRequiresUserActionOrigins: [],
})
})
it('should render the correct components', () => {
const { getByText, getByTestId } = render(
)
expect(getByText('close')).toBeTruthy()
expect(getByTestId('RNWebView').props.source.uri).toEqual(dappUri)
expect(getByTestId('RNWebView').props.mediaPlaybackRequiresUserAction).toBe(true)
expect(getByTestId('WebViewScreen/Refresh')).toBeTruthy()
expect(getByTestId('WebViewScreen/GoBack')).toBeDisabled()
expect(getByTestId('WebViewScreen/GoForward')).toBeDisabled()
expect(getByTestId('WebViewScreen/OpenBottomSheet')).toBeTruthy()
expect(getByTestId('WebViewScreen/KeyboardAwareView')).toBeTruthy()
})
it('should set the mediaPlaybackRequiresUserAction prop according to the url', () => {
const uri = 'https://somedapp.url'
jest.mocked(getDynamicConfigParams).mockReturnValue({
disabledMediaPlaybackRequiresUserActionOrigins: [uri],
})
const { getByTestId } = render(
)
expect(getByTestId('RNWebView').props.mediaPlaybackRequiresUserAction).toBe(false)
})
describe('Android bottom sheet', () => {
beforeEach(() => {
Platform.OS = 'android'
})
it('should render android bottom sheet when triple dot icon tapped', async () => {
const { getByTestId } = render(
)
fireEvent.press(getByTestId('WebViewScreen/OpenBottomSheet'))
expect(getByTestId('WebViewAndroidBottomSheet')).toBeTruthy()
})
})
})