import moment from 'moment-timezone'; import {OrganizationFixture} from 'sentry-fixture/organization'; import {SubscriptionFixture} from 'getsentry-test/fixtures/subscription'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import ForcedTrialModal from 'getsentry/components/forcedTrialModal'; import SubscriptionStore from 'getsentry/stores/subscriptionStore'; const slug = 'my-org'; describe('ForcedTrialModal', function () { let org: any, sub: any; const populateOrgAndSub = (orgParams = {}, subParams = {}) => { const now = moment(); org = OrganizationFixture({ slug, access: ['org:billing'], ...orgParams, }); sub = SubscriptionFixture({ organization: org, trialEnd: now.add(14, 'day').toString(), ...subParams, }); SubscriptionStore.set(org.slug, sub); }; describe('member limit', function () { beforeEach(function () { MockApiClient.addMockResponse({ url: `/organizations/${slug}/integrations/?includeConfig=0`, method: 'GET', body: [ { provider: { slug: 'msteams', name: 'Microsoft Teams', }, }, ], }); }); it('shows request upgrade when user does not have billing permissions', function () { populateOrgAndSub({access: []}); render(); expect(screen.getByLabelText('Request Upgrade')).toBeInTheDocument(); expect( screen.getByText('You may lose access to Sentry in 14 days') ).toBeInTheDocument(); }); it('shows upgrade now when user has billing permissions', function () { populateOrgAndSub(); render(); expect(screen.getByLabelText('Upgrade')).toBeInTheDocument(); expect( screen.getByText('Members may lose access to Sentry in 14 days') ).toBeInTheDocument(); }); }); describe('disallowed integration', function () { beforeEach(function () { MockApiClient.addMockResponse({ url: `/organizations/${slug}/integrations/?includeConfig=0`, method: 'GET', body: [ { provider: { slug: 'slack', name: 'Slack', }, }, ], }); }); it('shows upgrade button if has slack', function () { populateOrgAndSub(); render(); expect(screen.getByLabelText('Upgrade')).toBeInTheDocument(); expect( screen.getByText('Your Slack integration will stop working in 14 days') ).toBeInTheDocument(); }); }); });