index.spec.jsx 3.0 KB

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