box-ui-elements-mlh
Version:
72 lines (63 loc) • 2.57 kB
JavaScript
import React from 'react';
import { shallow } from 'enzyme';
import Avatar from '../Avatar';
describe('elements/content-sidebar/ActivityFeed/Avatar', () => {
const user = {
id: 'foo',
login: 'foo@bar.com',
name: 'foo bar',
type: 'user',
};
const getAvatarUrl = jest.fn().mockReturnValue(Promise.resolve('foo'));
const getWrapper = props => shallow(<Avatar {...props} />);
test('should render nothing if no avatarUrl in state and getAvatarUrl method was passed', () => {
expect(
getWrapper({ user, getAvatarUrl })
.dive()
.find('Avatar')
.exists(),
).toBe(false);
expect(getAvatarUrl).toBeCalledWith(user.id);
});
test('should render avatar with initials if getAvatarUrl is not passed in and no avatarUrl is in state', () => {
expect(
getWrapper({ user })
.find('AvatarInitials')
.exists(),
).toBe(false);
expect(getAvatarUrl).not.toBeCalledWith(user.id);
});
test('should render the avatar with an avatarUrl', () => {
const wrapper = getWrapper({ user, getAvatarUrl });
wrapper.instance().getAvatarUrlHandler('foo');
wrapper.update();
expect(wrapper).toMatchSnapshot();
expect(wrapper.instance().isMounted).toBe(true);
});
test('should set the avatarUrl state by calling getAvatarUrl function prop', () => {
const wrapper = getWrapper({ user, getAvatarUrl });
expect(wrapper.state('avatarUrl')).toBe(null);
wrapper
.instance()
.getAvatarUrl()
.then(() => {
expect(wrapper.state('avatarUrl')).toBe('foo');
});
});
test('should set the avatarUrl state from user prop', async () => {
const completeUser = { ...user, avatar_url: 'bar' };
const wrapper = getWrapper({ user: completeUser });
expect(wrapper.state('avatarUrl')).toBe(null);
await wrapper.instance().getAvatarUrl();
expect(wrapper.state('avatarUrl')).toBe('bar');
expect(getAvatarUrl).not.toBeCalledWith(user.id);
});
test('should set the avatarUrl state from user prop', async () => {
const wrapper = getWrapper({ user });
expect(wrapper.state('avatarUrl')).toBe(null);
await wrapper.instance().getAvatarUrl();
wrapper.update();
expect(getAvatarUrl).not.toBeCalledWith(user.id);
expect(wrapper.dive()).toMatchSnapshot();
});
});