index.spec.jsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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={{projectId: project.slug}} organization={org} />
  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. organization={org}
  47. params={{projectId: project.slug}}
  48. project={TestStubs.Project()}
  49. />
  50. );
  51. const expandButton = screen.getByRole('button', {name: 'Expand'});
  52. userEvent.click(expandButton);
  53. expect(expandButton).not.toBeInTheDocument();
  54. });
  55. it('deletes key', function () {
  56. render(
  57. <ProjectKeys
  58. routes={[]}
  59. organization={org}
  60. params={{projectId: project.slug}}
  61. project={TestStubs.Project()}
  62. />
  63. );
  64. userEvent.click(screen.getByRole('button', {name: 'Delete'}));
  65. renderGlobalModal();
  66. userEvent.click(screen.getByTestId('confirm-button'));
  67. expect(deleteMock).toHaveBeenCalled();
  68. });
  69. it('disable and enables key', async function () {
  70. render(
  71. <ProjectKeys
  72. routes={[]}
  73. organization={org}
  74. params={{projectId: project.slug}}
  75. project={TestStubs.Project()}
  76. />
  77. );
  78. const enableMock = MockApiClient.addMockResponse({
  79. url: `/projects/${org.slug}/${project.slug}/keys/${projectKeys[0].id}/`,
  80. method: 'PUT',
  81. });
  82. renderGlobalModal();
  83. userEvent.click(screen.getByRole('button', {name: 'Disable'}));
  84. userEvent.click(screen.getByTestId('confirm-button'));
  85. await waitForElementToBeRemoved(() => screen.getByRole('dialog'));
  86. expect(enableMock).toHaveBeenCalledWith(
  87. expect.anything(),
  88. expect.objectContaining({
  89. data: {isActive: false},
  90. })
  91. );
  92. userEvent.click(screen.getByRole('button', {name: 'Enable'}));
  93. userEvent.click(screen.getByTestId('confirm-button'));
  94. expect(enableMock).toHaveBeenCalledWith(
  95. expect.anything(),
  96. expect.objectContaining({
  97. data: {isActive: true},
  98. })
  99. );
  100. });
  101. });