projectAlertRules.spec.jsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import ProjectAlertRules from 'app/views/settings/projectAlerts/projectAlertRules';
  4. describe('projectAlertRules', function() {
  5. let deleteMock;
  6. beforeEach(function() {
  7. MockApiClient.addMockResponse({
  8. url: '/projects/org1/project1/rules/',
  9. body: [TestStubs.ProjectAlertRule()],
  10. });
  11. deleteMock = MockApiClient.addMockResponse({
  12. method: 'DELETE',
  13. url: '/projects/org1/project1/rules/1/',
  14. body: {},
  15. });
  16. });
  17. afterEach(function() {
  18. MockApiClient.clearMockResponses();
  19. });
  20. it('renders', function() {
  21. const wrapper = mount(
  22. <ProjectAlertRules routes={[]} params={{orgId: 'org1', projectId: 'project1'}} />,
  23. TestStubs.routerContext()
  24. );
  25. expect(wrapper).toMatchSnapshot();
  26. });
  27. it('deletes', function() {
  28. const wrapper = mount(
  29. <ProjectAlertRules routes={[]} params={{orgId: 'org1', projectId: 'project1'}} />,
  30. TestStubs.routerContext()
  31. );
  32. wrapper.find('Confirm').simulate('click');
  33. wrapper.update();
  34. wrapper.find('Modal Button[priority="primary"]').simulate('click');
  35. expect(deleteMock).toHaveBeenCalled();
  36. });
  37. it('has disabled edit rule button without access', function() {
  38. const wrapper = mount(
  39. <ProjectAlertRules routes={[]} params={{orgId: 'org1', projectId: 'project1'}} />,
  40. TestStubs.routerContext([{organization: TestStubs.Organization({access: []})}])
  41. );
  42. expect(wrapper.find('Button[data-test-id="edit-rule"]').prop('disabled')).toBe(true);
  43. });
  44. });