notificationSettings.spec.tsx 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import {initializeOrg} from 'sentry-test/initializeOrg';
  3. import {NotificationSettingsObject} from 'sentry/views/settings/account/notifications/constants';
  4. import NotificationSettings from 'sentry/views/settings/account/notifications/notificationSettings';
  5. const createWrapper = (
  6. notificationSettings: NotificationSettingsObject,
  7. orgProps?: any
  8. ) => {
  9. const {routerContext, organization} = initializeOrg({organization: orgProps} as any);
  10. MockApiClient.addMockResponse({
  11. url: '/users/me/notification-settings/',
  12. method: 'GET',
  13. body: notificationSettings,
  14. });
  15. MockApiClient.addMockResponse({
  16. url: '/users/me/notifications/',
  17. method: 'GET',
  18. body: {
  19. personalActivityNotifications: true,
  20. selfAssignOnResolve: true,
  21. weeklyReports: true,
  22. },
  23. });
  24. return mountWithTheme(
  25. <NotificationSettings organizations={[organization]} />,
  26. routerContext
  27. );
  28. };
  29. describe('NotificationSettings', function () {
  30. it('should render', function () {
  31. const wrapper = createWrapper({
  32. alerts: {user: {me: {email: 'never', slack: 'never'}}},
  33. deploy: {user: {me: {email: 'never', slack: 'never'}}},
  34. workflow: {user: {me: {email: 'never', slack: 'never'}}},
  35. });
  36. // There are 8 notification setting Selects/Toggles.
  37. const fields = wrapper.find('Field');
  38. expect(fields).toHaveLength(8);
  39. });
  40. it('renders quota section with feature flag', function () {
  41. const wrapper = createWrapper(
  42. {
  43. alerts: {user: {me: {email: 'never', slack: 'never'}}},
  44. deploy: {user: {me: {email: 'never', slack: 'never'}}},
  45. workflow: {user: {me: {email: 'never', slack: 'never'}}},
  46. },
  47. {features: ['slack-overage-notifications']}
  48. );
  49. // There are 9 notification setting Selects/Toggles.
  50. const fields = wrapper.find('Field');
  51. expect(fields).toHaveLength(9);
  52. });
  53. it('renders active release monitor', function () {
  54. const wrapper = createWrapper(
  55. {
  56. alerts: {user: {me: {email: 'never', slack: 'never'}}},
  57. deploy: {user: {me: {email: 'never', slack: 'never'}}},
  58. workflow: {user: {me: {email: 'never', slack: 'never'}}},
  59. },
  60. {features: ['active-release-monitor-alpha']}
  61. );
  62. // There are 9 notification setting Selects/Toggles.
  63. const fields = wrapper.find('Field');
  64. expect(fields).toHaveLength(9);
  65. });
  66. });