customCommitsResolutionModal.spec.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import selectEvent from 'react-select-event';
  2. import styled from '@emotion/styled';
  3. import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary';
  4. import CustomCommitsResolutionModal from 'sentry/components/customCommitsResolutionModal';
  5. import {makeCloseButton} from 'sentry/components/globalModal/components';
  6. describe('CustomCommitsResolutionModal', function () {
  7. let commitsMock;
  8. beforeEach(function () {
  9. commitsMock = MockApiClient.addMockResponse({
  10. url: '/projects/org-slug/project-slug/commits/',
  11. body: [TestStubs.Commit()],
  12. });
  13. });
  14. it('can select a commit', async function () {
  15. const onSelected = jest.fn();
  16. const wrapper = styled(p => p.children);
  17. render(
  18. <CustomCommitsResolutionModal
  19. Header={p => <span>{p.children}</span>}
  20. Body={wrapper()}
  21. Footer={wrapper()}
  22. orgSlug="org-slug"
  23. projectSlug="project-slug"
  24. onSelected={onSelected}
  25. closeModal={jest.fn()}
  26. CloseButton={makeCloseButton(() => null)}
  27. />
  28. );
  29. await waitFor(() => {
  30. expect(commitsMock).toHaveBeenCalled();
  31. });
  32. await selectEvent.select(screen.getByText('e.g. d86b832'), 'f7f395d14b2f');
  33. await userEvent.click(screen.getByRole('button', {name: 'Resolve'}));
  34. expect(onSelected).toHaveBeenCalledWith(
  35. expect.objectContaining({
  36. inCommit: {
  37. commit: 'f7f395d14b2fe29a4e253bf1d3094d61e6ad4434',
  38. repository: 'example/repo-name',
  39. },
  40. })
  41. );
  42. });
  43. });