ownershipInput.spec.jsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React from 'react';
  2. import {mountWithTheme} from 'sentry-test/enzyme';
  3. import OwnerInput from 'app/views/settings/project/projectOwnership/ownerInput';
  4. jest.mock('jquery');
  5. describe('Project Ownership Input', function() {
  6. let org;
  7. let project;
  8. let put;
  9. beforeEach(function() {
  10. org = TestStubs.Organization();
  11. project = TestStubs.Project();
  12. MockApiClient.addMockResponse({
  13. url: '/organizations/org-slug/members/',
  14. method: 'GET',
  15. body: [TestStubs.Members()],
  16. });
  17. put = MockApiClient.addMockResponse({
  18. url: `/projects/${org.slug}/${project.slug}/ownership/`,
  19. method: 'PUT',
  20. body: {raw: 'url:src @dummy@example.com'},
  21. });
  22. });
  23. it('renders', function() {
  24. const wrapper = mountWithTheme(
  25. <OwnerInput
  26. params={{orgId: org.slug, projectId: project.slug}}
  27. organization={org}
  28. initialText="url:src @dummy@example.com"
  29. project={project}
  30. />,
  31. TestStubs.routerContext()
  32. );
  33. const submit = wrapper.find('SaveButton button');
  34. expect(put).not.toHaveBeenCalled();
  35. // if text is unchanged, submit button is disabled
  36. submit.simulate('click');
  37. expect(put).not.toHaveBeenCalled();
  38. wrapper.find('StyledTextArea').simulate('change', {target: {value: 'new'}});
  39. submit.simulate('click');
  40. expect(put).toHaveBeenCalled();
  41. expect(wrapper.find(OwnerInput)).toMatchSnapshot();
  42. });
  43. });