import {OrganizationFixture} from 'sentry-fixture/organization'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import {SELF_NOTIFICATION_SETTINGS_TYPES} from 'sentry/views/settings/account/notifications/constants'; import {NOTIFICATION_SETTING_FIELDS} from 'sentry/views/settings/account/notifications/fields2'; import NotificationSettings from 'sentry/views/settings/account/notifications/notificationSettings'; function renderMockRequests({}: {}) { MockApiClient.addMockResponse({ url: '/users/me/notifications/', method: 'GET', body: { personalActivityNotifications: true, selfAssignOnResolve: true, }, }); } describe('NotificationSettings', function () { it('should render', async function () { const {router, organization} = initializeOrg(); renderMockRequests({}); render(, { router, }); // There are 8 notification setting Selects/Toggles. for (const field of [ 'alerts', 'workflow', 'deploy', 'approval', 'reports', 'email', ...SELF_NOTIFICATION_SETTINGS_TYPES, ]) { expect( await screen.findByText(String(NOTIFICATION_SETTING_FIELDS[field].label)) ).toBeInTheDocument(); } expect(screen.getByText('Issue Alerts')).toBeInTheDocument(); }); it('renders quota section with feature flag', async function () { const {router, organization} = initializeOrg({ organization: { features: ['user-spend-notifications-settings'], }, }); renderMockRequests({}); render(, { router, }); // There are 9 notification setting Selects/Toggles. for (const field of [ 'alerts', 'workflow', 'deploy', 'approval', 'reports', 'email', 'quota', ...SELF_NOTIFICATION_SETTINGS_TYPES, ]) { expect( await screen.findByText(String(NOTIFICATION_SETTING_FIELDS[field].label)) ).toBeInTheDocument(); } expect(screen.getByText('Issue Alerts')).toBeInTheDocument(); }); it('renders spend section instead of quota section with feature flag', async function () { const {router, organization} = initializeOrg({ organization: { features: ['user-spend-notifications-settings', 'spend-visibility-notifications'], }, }); const organizationNoFlag = OrganizationFixture(); organizationNoFlag.features.push('user-spend-notifications-settings'); renderMockRequests({}); render(, { router, }); expect(await screen.findByText('Spend')).toBeInTheDocument(); expect(screen.queryByText('Quota')).not.toBeInTheDocument(); }); });