import {MemberFixture} from 'sentry-fixture/member'; import {OrganizationFixture} from 'sentry-fixture/organization'; import {BillingConfigFixture} from 'getsentry-test/fixtures/billingConfig'; import {SubscriptionFixture} from 'getsentry-test/fixtures/subscription'; import {act, render, screen} from 'sentry-test/reactTestingLibrary'; import MemberListHeader from 'getsentry/hooks/memberListHeader'; import SubscriptionStore from 'getsentry/stores/subscriptionStore'; import {PlanTier} from 'getsentry/types'; describe('MemberListHeader', function () { const organization = OrganizationFixture(); const disabledMember = MemberFixture({ flags: { 'idp:provisioned': false, 'idp:role-restricted': false, 'member-limit:restricted': true, 'sso:invalid': false, 'sso:linked': false, 'partnership:restricted': false, }, }); const enabledMember = MemberFixture({}); const sub = SubscriptionFixture({ organization, canTrial: false, isTrial: false, plan: 'am1_f', }); SubscriptionStore.set(organization.slug, sub); beforeEach(() => { MockApiClient.addMockResponse({ url: `/customers/${organization.slug}/billing-config/`, query: {tier: 'am2'}, body: BillingConfigFixture(PlanTier.AM2), }); }); it('show upgrade if disabled member', async function () { const members = [disabledMember, enabledMember]; render(<MemberListHeader organization={organization} members={members} />); expect( await screen.findByText('Multiple members requires Team Plan or above') ).toBeInTheDocument(); expect( screen.getByTestId('member-settings-table-header-upsell-button') ).toBeInTheDocument(); }); it('do not show upgrade if no disabled member', async function () { const members = [enabledMember]; render(<MemberListHeader organization={organization} members={members} />); await act(tick); expect( screen.queryByTestId('member-settings-table-header-upsell-button') ).not.toBeInTheDocument(); }); });