import {OrganizationFixture} from 'sentry-fixture/organization'; import {SubscriptionFixture} from 'getsentry-test/fixtures/subscription'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import {resetMockDate, setMockDate} from 'sentry-test/utils'; import TrialAlert from 'getsentry/views/subscriptionPage/trialAlert'; describe('Subscription > TrialAlert', function () { const organization = OrganizationFixture(); const subscription = SubscriptionFixture({organization}); beforeEach(() => { setMockDate(new Date('2021-01-01')); }); afterEach(() => { resetMockDate(); }); it('does not render not on trial', function () { const sub = { ...subscription, isTrial: false, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, }; render(); expect(screen.queryByRole('button')).not.toBeInTheDocument(); }); it('renders 1 day left', function () { const sub = { ...subscription, isTrial: true, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, trialEnd: '2021-01-02', }; render(); expect(screen.getByText('1 Day Left')).toBeInTheDocument(); expect(screen.getByRole('button')).toBeInTheDocument(); }); it('renders 14 days left', function () { const sub = { ...subscription, isTrial: true, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, trialEnd: '2021-01-15', }; render(); expect(screen.getByText('14 Days Left')).toBeInTheDocument(); expect(screen.getByRole('button')).toBeInTheDocument(); }); it('does not render negative days left', function () { const sub = { ...subscription, isTrial: true, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, trialEnd: '2020-12-01', }; render(); expect(screen.queryByRole('button')).not.toBeInTheDocument(); }); it('renders enterprise trial', function () { const sub = { ...subscription, isTrial: true, isEnterpriseTrial: true, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, }; render(); expect(screen.getByText('Enterprise Trial')).toBeInTheDocument(); expect( screen.getByText( "With your trial you have access to Sentry's business plan features, and unlimited errors, transactions, replays, attachments, cron monitors, and uptime monitors." ) ).toBeInTheDocument(); }); it('renders am3 enterprise trial', function () { const am3_sub = SubscriptionFixture({organization, plan: 'am3_f'}); const sub = { ...am3_sub, isTrial: true, isEnterpriseTrial: true, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, }; render(); expect(screen.getByText('Enterprise Trial')).toBeInTheDocument(); expect( screen.getByText( "With your trial you have access to Sentry's business plan features, and unlimited errors, replays, attachments, cron monitors, spans, profile hours, and uptime monitors." ) ).toBeInTheDocument(); }); it('renders plan trial', function () { const sub = { ...subscription, isTrial: true, isEnterpriseTrial: false, isPerformancePlanTrial: false, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, }; render(); expect(screen.getByText('Business Plan Trial')).toBeInTheDocument(); expect( screen.getByText( "With your trial you have access to Sentry's business plan features." ) ).toBeInTheDocument(); expect(screen.queryByText(/unlimited errors/)).not.toBeInTheDocument(); }); it('renders performance trial', function () { const sub = { ...subscription, isTrial: true, isEnterpriseTrial: false, isPerformancePlanTrial: true, onDemandMaxSpend: 1000, onDemandSpendUsed: 0, }; render(); expect(screen.getByText('Performance Trial')).toBeInTheDocument(); expect( screen.getByText( `With your trial you have access to Sentry's performance features, and unlimited transactions and attachments.` ) ).toBeInTheDocument(); }); });