import { fireEvent, render } from '@testing-library/react-native' import React from 'react' import AppAnalytics from 'src/analytics/AppAnalytics' import { AssetsEvents } from 'src/analytics/Events' import Colors from 'src/styles/colors' import AssetTabBar from 'src/tokens/AssetTabBar' import { AssetTabType } from 'src/tokens/types' describe('AssetTabBar', () => { const onChange = jest.fn() beforeEach(() => { jest.clearAllMocks() }) it('renders all items if positions is enabled', () => { const { getAllByTestId } = render( ) const tabItems = getAllByTestId('Assets/TabBarItem') expect(tabItems).toHaveLength(3) expect(tabItems[0]).toHaveTextContent('tokens') expect(tabItems[0].children[0]).toHaveStyle({ color: Colors.contentPrimary }) expect(tabItems[1]).toHaveTextContent('collectibles') expect(tabItems[1].children[0]).toHaveStyle({ color: Colors.contentSecondary }) expect(tabItems[2]).toHaveTextContent('dappPositions') expect(tabItems[2].children[0]).toHaveStyle({ color: Colors.contentSecondary }) }) it('does not render positions if disabled', () => { const { getAllByTestId } = render( ) const tabItems = getAllByTestId('Assets/TabBarItem') expect(tabItems).toHaveLength(2) expect(tabItems[0]).toHaveTextContent('tokens') expect(tabItems[0].children[0]).toHaveStyle({ color: Colors.contentSecondary }) expect(tabItems[1]).toHaveTextContent('collectibles') expect(tabItems[1].children[0]).toHaveStyle({ color: Colors.contentPrimary }) }) it.each([ { tab: AssetTabType.Tokens, event: AssetsEvents.view_wallet_assets }, { tab: AssetTabType.Collectibles, event: AssetsEvents.view_collectibles }, { tab: AssetTabType.Positions, event: AssetsEvents.view_dapp_positions }, ])('selecting tab $tab fires analytics events and invokes on change', ({ tab, event }) => { const { getAllByTestId } = render( ) fireEvent.press(getAllByTestId('Assets/TabBarItem')[tab]) expect(AppAnalytics.track).toHaveBeenCalledTimes(1) expect(AppAnalytics.track).toHaveBeenCalledWith(event) expect(onChange).toHaveBeenCalledTimes(1) expect(onChange).toHaveBeenCalledWith(tab) }) })