mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
89 lines
2.9 KiB
TypeScript
89 lines
2.9 KiB
TypeScript
import {MemberFixture} from 'sentry-fixture/member';
|
|
import {RouterContextFixture} from 'sentry-fixture/routerContextFixture';
|
|
import {UserFixture} from 'sentry-fixture/user';
|
|
|
|
import {render, screen} from 'sentry-test/reactTestingLibrary';
|
|
|
|
import MemberBadge from 'sentry/components/idBadge/memberBadge';
|
|
|
|
describe('MemberBadge', function () {
|
|
let member;
|
|
const routerContext = RouterContextFixture();
|
|
beforeEach(() => {
|
|
member = MemberFixture();
|
|
});
|
|
|
|
it('renders with link when member and orgId are supplied', function () {
|
|
render(<MemberBadge member={member} orgId="orgId" />, {context: routerContext});
|
|
|
|
expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
|
|
expect(screen.getByRole('link', {name: 'Foo Bar'})).toBeInTheDocument();
|
|
expect(screen.getByText('[email protected]')).toBeInTheDocument();
|
|
});
|
|
|
|
it('does not use a link when useLink = false', function () {
|
|
render(<MemberBadge member={member} useLink={false} orgId="orgId" />);
|
|
|
|
expect(screen.queryByRole('link', {name: 'Foo Bar'})).not.toBeInTheDocument();
|
|
expect(screen.getByText('Foo Bar')).toBeInTheDocument();
|
|
});
|
|
|
|
it('does not use a link when orgId = null', function () {
|
|
render(<MemberBadge member={member} useLink />);
|
|
|
|
expect(screen.queryByRole('link', {name: 'Foo Bar'})).not.toBeInTheDocument();
|
|
expect(screen.getByText('Foo Bar')).toBeInTheDocument();
|
|
});
|
|
|
|
it('can display alternate display names/emails', function () {
|
|
render(
|
|
<MemberBadge
|
|
member={member}
|
|
displayName="Other Display Name"
|
|
displayEmail="Other Display Email"
|
|
/>
|
|
);
|
|
|
|
expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
|
|
expect(screen.getByText('Other Display Name')).toBeInTheDocument();
|
|
expect(screen.getByText('Other Display Email')).toBeInTheDocument();
|
|
});
|
|
|
|
it('can coalesce using username', function () {
|
|
member.user = UserFixture({
|
|
name: undefined,
|
|
email: undefined,
|
|
username: 'the-batman',
|
|
});
|
|
|
|
render(<MemberBadge member={member} />);
|
|
|
|
expect(screen.getByText('the-batman')).toBeInTheDocument();
|
|
});
|
|
|
|
it('can coalesce using ipaddress', function () {
|
|
member.user = UserFixture({
|
|
name: undefined,
|
|
email: undefined,
|
|
username: undefined,
|
|
ipAddress: '127.0.0.1',
|
|
});
|
|
render(<MemberBadge member={member} />);
|
|
|
|
expect(screen.getByText('127.0.0.1')).toBeInTheDocument();
|
|
});
|
|
|
|
it('can hide email address', function () {
|
|
render(<MemberBadge member={member} hideEmail />);
|
|
|
|
expect(screen.queryByText('[email protected]')).not.toBeInTheDocument();
|
|
});
|
|
|
|
it('renders when a member without a user to passed to member', function () {
|
|
render(<MemberBadge member={{...member, user: null}} />);
|
|
|
|
expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
|
|
expect(screen.getByText('Sentry 1 Name')).toBeInTheDocument();
|
|
});
|
|
});
|