index.spec.jsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  2. import GlobalModal from 'sentry/components/globalModal';
  3. import ProjectKeys from 'sentry/views/settings/project/projectKeys/list';
  4. describe('ProjectKeys', function () {
  5. let org, project;
  6. let deleteMock;
  7. let projectKeys;
  8. beforeEach(function () {
  9. org = TestStubs.Organization();
  10. project = TestStubs.Project();
  11. projectKeys = TestStubs.ProjectKeys();
  12. MockApiClient.clearMockResponses();
  13. MockApiClient.addMockResponse({
  14. url: `/projects/${org.slug}/${project.slug}/keys/`,
  15. method: 'GET',
  16. body: projectKeys,
  17. });
  18. deleteMock = MockApiClient.addMockResponse({
  19. url: `/projects/${org.slug}/${project.slug}/keys/${projectKeys[0].id}/`,
  20. method: 'DELETE',
  21. });
  22. });
  23. it('renders empty', function () {
  24. MockApiClient.clearMockResponses();
  25. MockApiClient.addMockResponse({
  26. url: `/projects/${org.slug}/${project.slug}/keys/`,
  27. method: 'GET',
  28. body: [],
  29. });
  30. render(
  31. <ProjectKeys routes={[]} params={{orgId: org.slug, projectId: project.slug}} />
  32. );
  33. expect(
  34. screen.getByText('There are no keys active for this project.')
  35. ).toBeInTheDocument();
  36. });
  37. it('has clippable box', function () {
  38. render(
  39. <ProjectKeys
  40. routes={[]}
  41. params={{orgId: org.slug, projectId: project.slug}}
  42. project={TestStubs.Project()}
  43. />
  44. );
  45. const expandButton = screen.getByRole('button', {name: 'Expand'});
  46. userEvent.click(expandButton);
  47. expect(expandButton).not.toBeInTheDocument();
  48. });
  49. it('deletes key', function () {
  50. render(
  51. <ProjectKeys
  52. routes={[]}
  53. params={{orgId: org.slug, projectId: project.slug}}
  54. project={TestStubs.Project()}
  55. />
  56. );
  57. userEvent.click(screen.getByRole('button', {name: 'Delete'}));
  58. render(<GlobalModal />);
  59. userEvent.click(screen.getByTestId('confirm-button'));
  60. expect(deleteMock).toHaveBeenCalled();
  61. });
  62. it('disable and enables key', function () {
  63. render(
  64. <ProjectKeys
  65. routes={[]}
  66. params={{orgId: org.slug, projectId: project.slug}}
  67. project={TestStubs.Project()}
  68. />
  69. );
  70. const enableMock = MockApiClient.addMockResponse({
  71. url: `/projects/${org.slug}/${project.slug}/keys/${projectKeys[0].id}/`,
  72. method: 'PUT',
  73. });
  74. userEvent.click(screen.getByRole('button', {name: 'Disable'}));
  75. expect(enableMock).toHaveBeenCalledWith(
  76. expect.anything(),
  77. expect.objectContaining({
  78. data: {isActive: false},
  79. })
  80. );
  81. userEvent.click(screen.getByRole('button', {name: 'Enable'}));
  82. expect(enableMock).toHaveBeenCalledWith(
  83. expect.anything(),
  84. expect.objectContaining({
  85. data: {isActive: true},
  86. })
  87. );
  88. });
  89. });