customResolutionModal.spec.jsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import {selectByValue} from 'sentry-test/select-new';
  3. import CustomResolutionModal from 'sentry/components/customResolutionModal';
  4. describe('CustomResolutionModal', function () {
  5. let releasesMock;
  6. beforeEach(function () {
  7. releasesMock = MockApiClient.addMockResponse({
  8. url: '/projects/org-slug/project-slug/releases/',
  9. body: [TestStubs.Release()],
  10. });
  11. });
  12. it('can select a version', async function () {
  13. const onSelected = jest.fn();
  14. const wrapper = mountWithTheme(
  15. <CustomResolutionModal
  16. Header={p => p.children}
  17. Body={p => p.children}
  18. Footer={p => p.children}
  19. orgSlug="org-slug"
  20. projectSlug="project-slug"
  21. onSelected={onSelected}
  22. closeModal={jest.fn()}
  23. />
  24. );
  25. expect(releasesMock).toHaveBeenCalled();
  26. await tick();
  27. wrapper.update();
  28. expect(wrapper.find('Select').prop('options')).toEqual([
  29. expect.objectContaining({
  30. value: 'sentry-android-shop@1.2.0',
  31. label: expect.anything(),
  32. }),
  33. ]);
  34. selectByValue(wrapper, 'sentry-android-shop@1.2.0', {
  35. selector: 'SelectAsyncControl[name="version"]',
  36. });
  37. wrapper.find('form').simulate('submit');
  38. expect(onSelected).toHaveBeenCalledWith({
  39. inRelease: 'sentry-android-shop@1.2.0',
  40. });
  41. });
  42. });