auditLogView.spec.tsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import {initializeOrg} from 'sentry-test/initializeOrg';
  2. import {render, screen} from 'sentry-test/reactTestingLibrary';
  3. import {OrganizationContext} from 'sentry/views/organizationContext';
  4. import OrganizationAuditLog from 'sentry/views/settings/organizationAuditLog';
  5. describe('OrganizationAuditLog', function () {
  6. const {routerContext, organization, router} = initializeOrg({
  7. ...initializeOrg(),
  8. projects: [],
  9. router: {
  10. params: {orgId: 'org-slug'},
  11. },
  12. });
  13. const ENDPOINT = `/organizations/${organization.slug}/audit-logs/`;
  14. beforeEach(function () {
  15. MockApiClient.clearMockResponses();
  16. MockApiClient.addMockResponse({
  17. url: ENDPOINT,
  18. body: {rows: TestStubs.AuditLogs(), options: TestStubs.AuditLogsApiEventNames()},
  19. });
  20. });
  21. it('renders', async function () {
  22. render(
  23. <OrganizationContext.Provider value={organization}>
  24. <OrganizationAuditLog location={router.location} />
  25. </OrganizationContext.Provider>,
  26. {
  27. context: routerContext,
  28. }
  29. );
  30. expect(await screen.findByRole('heading')).toHaveTextContent('Audit Log');
  31. expect(screen.getByRole('textbox')).toBeInTheDocument();
  32. expect(screen.getByText('Member')).toBeInTheDocument();
  33. expect(screen.getByText('Action')).toBeInTheDocument();
  34. expect(screen.getByText('IP')).toBeInTheDocument();
  35. expect(screen.getByText('Time')).toBeInTheDocument();
  36. expect(screen.queryByText('No audit entries available')).not.toBeInTheDocument();
  37. expect(screen.getByText('edited project ludic-science')).toBeInTheDocument();
  38. });
  39. it('renders empty', async function () {
  40. MockApiClient.clearMockResponses();
  41. MockApiClient.addMockResponse({
  42. url: ENDPOINT,
  43. body: {rows: [], options: TestStubs.AuditLogsApiEventNames()},
  44. });
  45. render(
  46. <OrganizationContext.Provider value={organization}>
  47. <OrganizationAuditLog location={router.location} />
  48. </OrganizationContext.Provider>,
  49. {
  50. context: routerContext,
  51. }
  52. );
  53. expect(await screen.findByText('No audit entries available')).toBeInTheDocument();
  54. });
  55. it('displays whether an action was done by a superuser', async () => {
  56. render(
  57. <OrganizationContext.Provider value={organization}>
  58. <OrganizationAuditLog location={router.location} />
  59. </OrganizationContext.Provider>,
  60. {
  61. context: routerContext,
  62. }
  63. );
  64. expect(await screen.findByText('Sentry Staff')).toBeInTheDocument();
  65. expect(screen.getAllByText('Foo Bar')).toHaveLength(2);
  66. });
  67. });