import { screen } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' import PartnerManagedResource from './PartnerManagedResource' import { MANAGED_BY } from '@/lib/constants/infrastructure' import { render } from '@/tests/helpers' const { mockUseAwsRedirectQuery, mockUseVercelRedirectQuery } = vi.hoisted(() => ({ mockUseAwsRedirectQuery: vi.fn(), mockUseVercelRedirectQuery: vi.fn(), })) vi.mock('@/data/integrations/vercel-redirect-query', () => ({ useVercelRedirectQuery: mockUseVercelRedirectQuery, })) vi.mock('@/data/integrations/aws-redirect-query', () => ({ useAwsRedirectQuery: mockUseAwsRedirectQuery, })) vi.mock('./PartnerIcon', () => ({ default: () =>
, })) describe('PartnerManagedResource', () => { beforeEach(() => { vi.clearAllMocks() mockUseVercelRedirectQuery.mockReturnValue({ data: undefined, isLoading: false, isError: false, }) mockUseAwsRedirectQuery.mockReturnValue({ data: undefined, isLoading: false, isError: false, }) }) it('renders Stripe connected copy and never shows CTA even when cta prop exists', () => { render(stripe projects upgrade supabase/free
>
}
cta={{ installationId: 'vercel-installation-id', organizationSlug: 'aws-org' }}
/>
)
expect(screen.getByText('Payment Methods are connected to Stripe')).toBeInTheDocument()
expect(screen.getByText('stripe projects upgrade supabase/free')).toBeInTheDocument()
expect(screen.queryByRole('link')).toBeNull()
expect(mockUseVercelRedirectQuery).toHaveBeenCalledWith(
{ installationId: 'vercel-installation-id' },
expect.objectContaining({ enabled: false })
)
expect(mockUseAwsRedirectQuery).toHaveBeenCalledWith(
{ organizationSlug: 'aws-org' },
expect.objectContaining({ enabled: false })
)
})
it('renders AWS CTA only when a redirect URL is available', () => {
mockUseAwsRedirectQuery.mockReturnValue({
data: { url: 'https://console.aws.amazon.com/billing/home#/' },
isLoading: false,
isError: false,
})
render(