import {mountWithTheme, shallow} from 'sentry-test/enzyme';
import MemberBadge from 'sentry/components/idBadge/memberBadge';
describe('MemberBadge', function () {
let member;
beforeEach(() => {
member = TestStubs.Member();
});
it('renders with link when member and orgId are supplied', function () {
const wrapper = mountWithTheme();
expect(wrapper.find('StyledName').prop('children')).toBe('Foo Bar');
expect(wrapper.find('StyledEmail').prop('children')).toBe('foo@example.com');
expect(wrapper.find('StyledName Link')).toHaveLength(1);
expect(wrapper.find('StyledAvatar')).toHaveLength(1);
});
it('does not use a link when useLink = false', function () {
const wrapper = mountWithTheme(
);
expect(wrapper.find('StyledName Link')).toHaveLength(0);
});
it('does not use a link when orgId = null', function () {
const wrapper = mountWithTheme();
expect(wrapper.find('StyledName Link')).toHaveLength(0);
});
it('can display alternate display names/emails', function () {
const wrapper = shallow(
);
expect(wrapper.find('StyledName').prop('children')).toBe('Other Display Name');
expect(wrapper.find('StyledEmail').prop('children')).toBe('Other Display Email');
expect(wrapper.find('StyledAvatar')).toHaveLength(1);
});
it('can coalesce using username', function () {
member.user = TestStubs.User({
name: null,
email: null,
username: 'the-batman',
});
const wrapper = shallow();
expect(wrapper.find('StyledName').prop('children')).toBe(member.user.username);
expect(wrapper.find('StyledEmail').prop('children')).toBe(null);
expect(wrapper.find('StyledAvatar')).toHaveLength(1);
});
it('can coalesce using ipaddress', function () {
member.user = TestStubs.User({
name: null,
email: null,
username: null,
ipAddress: '127.0.0.1',
});
const wrapper = shallow();
expect(wrapper.find('StyledName').prop('children')).toBe(member.user.ipAddress);
expect(wrapper.find('StyledEmail').prop('children')).toBe(null);
});
it('can hide email address', function () {
const wrapper = mountWithTheme();
expect(wrapper.find('StyledEmail')).toHaveLength(0);
});
it('renders when a member without a user to passed to member', function () {
const wrapper = mountWithTheme();
expect(wrapper.find('StyledName').prop('children')).toBe('Sentry 1 Name');
expect(wrapper.find('StyledAvatar')).toHaveLength(1);
expect(wrapper.find('StyledAvatar').prop('user').email).toBe(member.email);
});
});