import {OrganizationFixture} from 'sentry-fixture/organization'; import {SubscriptionFixture} from 'getsentry-test/fixtures/subscription'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import {SubscriptionUpsellBanner} from './subscriptionUpsellBanner'; describe('SubscriptionUpsellBanner', () => { beforeEach(() => { const promptResponse = { dismissed_ts: undefined, snoozed_ts: undefined, }; MockApiClient.addMockResponse({ url: `/organizations/org-slug/prompts-activity/`, body: promptResponse, }); MockApiClient.addMockResponse({ url: `/customers/org-slug/plan-migrations/?applied=0`, method: 'GET', body: {}, }); MockApiClient.addMockResponse({ url: `/subscriptions/org-slug/`, body: {}, }); MockApiClient.addMockResponse({ url: `/customers/org-slug/plan-migrations/`, query: {scheduled: 1, applied: 0}, method: 'GET', body: [], }); }); it('should render banner for users on free plan with billing access', async () => { const organization = OrganizationFixture({access: ['org:billing']}); const subscription = SubscriptionFixture({ organization, planTier: 'am2', plan: 'am2_f', }); render( , {organization} ); expect(await screen.findByText('Try Sentry Business for Free')).toBeInTheDocument(); expect( screen.getByText(/Activate your trial to take advantage of/) ).toBeInTheDocument(); expect(screen.getByRole('button', {name: 'Start Trial'})).toBeInTheDocument(); }); it('should render banner for users on free plan without billing access', async () => { const organization = OrganizationFixture(); const subscription = SubscriptionFixture({ organization, planTier: 'am2', plan: 'am2_f', }); render( , {organization} ); expect( await screen.findByText('Request a Free Sentry Business Trial') ).toBeInTheDocument(); expect( screen.getByText(/your Organization’s owner to start a Business plan/) ).toBeInTheDocument(); expect(screen.getByRole('button', {name: 'Request Trial'})).toBeInTheDocument(); }); });