memberBadge.spec.jsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import {Member} from 'fixtures/js-stubs/member';
  2. import {User} from 'fixtures/js-stubs/user';
  3. import {render, screen} from 'sentry-test/reactTestingLibrary';
  4. import MemberBadge from 'sentry/components/idBadge/memberBadge';
  5. describe('MemberBadge', function () {
  6. let member;
  7. beforeEach(() => {
  8. member = Member();
  9. });
  10. it('renders with link when member and orgId are supplied', function () {
  11. render(<MemberBadge member={member} orgId="orgId" />);
  12. expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
  13. expect(screen.getByRole('link', {name: 'Foo Bar'})).toBeInTheDocument();
  14. expect(screen.getByText('foo@example.com')).toBeInTheDocument();
  15. });
  16. it('does not use a link when useLink = false', function () {
  17. render(<MemberBadge member={member} useLink={false} orgId="orgId" />);
  18. expect(screen.queryByRole('link', {name: 'Foo Bar'})).not.toBeInTheDocument();
  19. expect(screen.getByText('Foo Bar')).toBeInTheDocument();
  20. });
  21. it('does not use a link when orgId = null', function () {
  22. render(<MemberBadge member={member} useLink />);
  23. expect(screen.queryByRole('link', {name: 'Foo Bar'})).not.toBeInTheDocument();
  24. expect(screen.getByText('Foo Bar')).toBeInTheDocument();
  25. });
  26. it('can display alternate display names/emails', function () {
  27. render(
  28. <MemberBadge
  29. member={member}
  30. displayName="Other Display Name"
  31. displayEmail="Other Display Email"
  32. />
  33. );
  34. expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
  35. expect(screen.getByText('Other Display Name')).toBeInTheDocument();
  36. expect(screen.getByText('Other Display Email')).toBeInTheDocument();
  37. });
  38. it('can coalesce using username', function () {
  39. member.user = User({
  40. name: null,
  41. email: null,
  42. username: 'the-batman',
  43. });
  44. render(<MemberBadge member={member} />);
  45. expect(screen.getByText('the-batman')).toBeInTheDocument();
  46. });
  47. it('can coalesce using ipaddress', function () {
  48. member.user = User({
  49. name: null,
  50. email: null,
  51. username: null,
  52. ipAddress: '127.0.0.1',
  53. });
  54. render(<MemberBadge member={member} />);
  55. expect(screen.getByText('127.0.0.1')).toBeInTheDocument();
  56. });
  57. it('can hide email address', function () {
  58. render(<MemberBadge member={member} hideEmail />);
  59. expect(screen.queryByText('foo@example.com')).not.toBeInTheDocument();
  60. });
  61. it('renders when a member without a user to passed to member', function () {
  62. render(<MemberBadge member={{...member, user: null}} />);
  63. expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
  64. expect(screen.getByText('Sentry 1 Name')).toBeInTheDocument();
  65. });
  66. });