subscriptionBox.spec.jsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import {SubscriptionBox} from 'sentry/views/settings/organizationDeveloperSettings/subscriptionBox';
  3. describe('SubscriptionBox', () => {
  4. let wrapper;
  5. let onChange;
  6. let org = TestStubs.Organization();
  7. beforeEach(() => {
  8. onChange = jest.fn();
  9. wrapper = mountWithTheme(
  10. <SubscriptionBox
  11. resource="issue"
  12. checked={false}
  13. disabledFromPermissions={false}
  14. onChange={onChange}
  15. organization={org}
  16. />
  17. );
  18. });
  19. it('renders resource checkbox', () => {
  20. expect(wrapper).toSnapshot();
  21. });
  22. it('calls onChange prop when checking checkbox', () => {
  23. wrapper.find('Checkbox input').simulate('change', {target: {checked: true}});
  24. expect(onChange).toHaveBeenCalledWith('issue', true);
  25. });
  26. it('renders tooltip when checkbox is disabled', () => {
  27. wrapper.setProps({disabledFromPermissions: true});
  28. expect(wrapper.find('Tooltip').prop('disabled')).toBe(false);
  29. });
  30. describe('error.created resource subscription', () => {
  31. beforeEach(() => {
  32. onChange = jest.fn();
  33. wrapper = mountWithTheme(
  34. <SubscriptionBox
  35. resource="error"
  36. checked={false}
  37. disabledFromPermissions={false}
  38. onChange={onChange}
  39. organization={org}
  40. />
  41. );
  42. });
  43. it('checkbox disabled without integrations-event-hooks flag', () => {
  44. expect(wrapper.find('Checkbox').prop('disabled')).toBe(true);
  45. });
  46. it('tooltip enabled without integrations-event-hooks flag', () => {
  47. expect(wrapper.find('Tooltip').prop('disabled')).toBe(false);
  48. });
  49. it('checkbox visible with integrations-event-hooks flag', () => {
  50. org = TestStubs.Organization({features: ['integrations-event-hooks']});
  51. wrapper = mountWithTheme(
  52. <SubscriptionBox
  53. resource="error"
  54. checked={false}
  55. disabledFromPermissions={false}
  56. onChange={onChange}
  57. organization={org}
  58. />
  59. );
  60. expect(wrapper.find('Checkbox').prop('disabled')).toBe(false);
  61. });
  62. it('Tooltip disabled with integrations-event-hooks flag', () => {
  63. org = TestStubs.Organization({features: ['integrations-event-hooks']});
  64. wrapper = mountWithTheme(
  65. <SubscriptionBox
  66. resource="error"
  67. checked={false}
  68. disabledFromPermissions={false}
  69. onChange={onChange}
  70. organization={org}
  71. />
  72. );
  73. expect(wrapper.find('Tooltip').prop('disabled')).toBe(true);
  74. });
  75. });
  76. it('disables checkbox when webhookDisabled=true', () => {
  77. wrapper = mountWithTheme(
  78. <SubscriptionBox
  79. resource="issue"
  80. checked={false}
  81. disabledFromPermissions={false}
  82. webhookDisabled
  83. onChange={onChange}
  84. organization={org}
  85. />
  86. );
  87. const tooltip = wrapper.find('Tooltip');
  88. expect(tooltip.prop('disabled')).toBe(false);
  89. expect(tooltip.prop('title')).toBe(
  90. 'Cannot enable webhook subscription without specifying a webhook url'
  91. );
  92. expect(wrapper.find('Checkbox').prop('disabled')).toBe(true);
  93. });
  94. });