import React from 'react';
import { Image } from 'react-native';
import { shallow } from 'enzyme';
import { BaseAvatarSize } from '../BaseAvatar';
import TokenAvatar from './TokenAvatar';
import { TOKEN_AVATAR_IMAGE_ID } from '../../../constants/test-ids';
// eslint-disable-next-line
// @ts-ignore
import ethLogo from '../../../images/eth-logo.png';
describe('TokenAvatar', () => {
const tokenName = 'Ethereum';
// turns out this method returns an object with testUri key when on jest context
// eslint-disable-next-line
// @ts-ignore
const testImageUrl = Image.resolveAssetSource(ethLogo).testUri;
it('should render correctly', () => {
const wrapper = shallow(
,
);
expect(wrapper).toMatchSnapshot();
});
it('should render network image', () => {
const wrapper = shallow(
,
);
const imageComponent = wrapper.findWhere(
(node) => node.prop('testID') === TOKEN_AVATAR_IMAGE_ID,
);
expect(imageComponent.exists()).toBe(true);
});
it('should render fallback when image fails to load', () => {
const wrapper = shallow(
,
);
const prevImageComponent = wrapper.findWhere(
(node) => node.prop('testID') === TOKEN_AVATAR_IMAGE_ID,
);
// Simulate onError on Image component
prevImageComponent.props().onError({ nativeEvent: { error: 'ERROR!' } });
const currentImageComponent = wrapper.findWhere(
(node) => node.prop('testID') === TOKEN_AVATAR_IMAGE_ID,
);
expect(currentImageComponent.exists()).toBe(false);
});
it('should render fallback when tokenImageUrl is not provided', () => {
const wrapper = shallow(
,
);
const imageComponent = wrapper.findWhere(
(node) => node.prop('testID') === TOKEN_AVATAR_IMAGE_ID,
);
expect(imageComponent.exists()).toBe(false);
});
});