import { render } from '@testing-library/react-native' import * as React from 'react' import { Text } from 'react-native' import PercentageIndicator from 'src/components/PercentageIndicator' import { getElementText } from 'test/utils' describe('PercentageIndicator', () => { it('renders correctly when compared value is lower than current', async () => { const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('300.00%') expect(tree.queryByTestId('testIndicator:UpIndicator')).toBeTruthy() expect(tree.queryByTestId('testIndicator:DownIndicator')).toBeFalsy() expect(tree.getByTestId('testIndicator:UpIndicator').type).toEqual('svg') }) it('renders correctly when compared value is greater than current', async () => { const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('50.00%') expect(tree.queryByTestId('testIndicator:DownIndicator')).toBeTruthy() expect(tree.queryByTestId('testIndicator:UpIndicator')).toBeFalsy() expect(tree.getByTestId('testIndicator:DownIndicator').type).toEqual('svg') }) it('renders correctly when compared value is equal to current', async () => { const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('0.00%') expect(tree.queryByTestId('testIndicator:DownIndicator')).toBeFalsy() expect(tree.queryByTestId('testIndicator:UpIndicator')).toBeFalsy() }) it('renders correctly with custom icons when compared value is lower than current', async () => { const upIcon = jest.fn(({ testID }) => Up Icon) const downIcon = jest.fn(({ testID }) => Down Icon) const noChangeIcon = jest.fn(({ testID }) => NoChange Icon) const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('Up Icon300.00%') expect(tree.queryByTestId('testIndicator:UpIndicator')).toBeTruthy() expect(tree.queryByTestId('testIndicator:DownIndicator')).toBeFalsy() expect(tree.queryByTestId('testIndicator:NoChangeIndicator')).toBeFalsy() expect(tree.getByTestId('testIndicator:UpIndicator').type).toEqual('Text') }) it('renders correctly with custom icons when compared value is greater than current', async () => { const upIcon = jest.fn(({ testID }) => Up Icon) const downIcon = jest.fn(({ testID }) => Down Icon) const noChangeIcon = jest.fn(({ testID }) => NoChange Icon) const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('Down Icon50.00%') expect(tree.queryByTestId('testIndicator:DownIndicator')).toBeTruthy() expect(tree.queryByTestId('testIndicator:UpIndicator')).toBeFalsy() expect(tree.queryByTestId('testIndicator:NoChangeIndicator')).toBeFalsy() expect(tree.getByTestId('testIndicator:DownIndicator').type).toEqual('Text') }) it('renders correctly with custom icons when compared value is equal to current', async () => { const upIcon = jest.fn(({ testID }) => Up Icon) const downIcon = jest.fn(({ testID }) => Down Icon) const noChangeIcon = jest.fn(({ testID }) => NoChange Icon) const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('NoChange Icon0.00%') expect(tree.queryByTestId('testIndicator:DownIndicator')).toBeFalsy() expect(tree.queryByTestId('testIndicator:UpIndicator')).toBeFalsy() expect(tree.queryByTestId('testIndicator:NoChangeIndicator')).toBeTruthy() expect(tree.getByTestId('testIndicator:NoChangeIndicator').type).toEqual('Text') }) it('renders correctly with suffix text', async () => { const tree = render( ) expect(getElementText(tree.getByTestId('testIndicator'))).toBe('300.00%Today') }) })