memberBadge.spec.tsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import {MemberFixture} from 'sentry-fixture/member';
  2. import {UserFixture} from 'sentry-fixture/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 = MemberFixture();
  9. });
  10. it('renders with link when member and orgId are supplied', function () {
  11. render(<MemberBadge member={member} />);
  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 disableLink', function () {
  17. render(<MemberBadge member={member} disableLink />);
  18. expect(screen.queryByRole('link', {name: 'Foo Bar'})).not.toBeInTheDocument();
  19. expect(screen.getByText('Foo Bar')).toBeInTheDocument();
  20. });
  21. it('can display alternate display names/emails', function () {
  22. render(
  23. <MemberBadge
  24. member={member}
  25. displayName="Other Display Name"
  26. displayEmail="Other Display Email"
  27. />
  28. );
  29. expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
  30. expect(screen.getByText('Other Display Name')).toBeInTheDocument();
  31. expect(screen.getByText('Other Display Email')).toBeInTheDocument();
  32. });
  33. it('can coalesce using username', function () {
  34. member.user = UserFixture({
  35. name: undefined,
  36. email: undefined,
  37. username: 'the-batman',
  38. });
  39. render(<MemberBadge member={member} />);
  40. expect(screen.getByText('the-batman')).toBeInTheDocument();
  41. });
  42. it('can coalesce using ipaddress', function () {
  43. member.user = UserFixture({
  44. name: undefined,
  45. email: undefined,
  46. username: undefined,
  47. ipAddress: '127.0.0.1',
  48. });
  49. render(<MemberBadge member={member} />);
  50. expect(screen.getByText('127.0.0.1')).toBeInTheDocument();
  51. });
  52. it('can hide email address', function () {
  53. render(<MemberBadge member={member} hideEmail />);
  54. expect(screen.queryByText('foo@example.com')).not.toBeInTheDocument();
  55. });
  56. it('renders when a member without a user to passed to member', function () {
  57. render(<MemberBadge member={{...member, user: null}} />);
  58. expect(screen.getByTestId('letter_avatar-avatar')).toBeInTheDocument();
  59. expect(screen.getByText('Sentry 1 Name')).toBeInTheDocument();
  60. });
  61. });