| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- 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: () => <div data-testid="partner-icon" />,
- }))
- 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(
- <PartnerManagedResource
- managedBy={MANAGED_BY.STRIPE_PROJECTS}
- resource="Payment Methods"
- details={
- <>
- Run <code>stripe projects upgrade briven/free</code>
- </>
- }
- cta={{ installationId: 'vercel-installation-id', organizationSlug: 'aws-org' }}
- />
- )
- expect(screen.getByText('Payment Methods are connected to Stripe')).toBeInTheDocument()
- expect(screen.getByText('stripe projects upgrade briven/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(
- <PartnerManagedResource
- managedBy={MANAGED_BY.AWS_MARKETPLACE}
- resource="Invoices"
- cta={{ organizationSlug: 'aws-org', path: 'bills' }}
- />
- )
- expect(screen.getByText('Invoices are managed by AWS Marketplace')).toBeInTheDocument()
- expect(screen.getByRole('link', { name: 'View Invoices on AWS Marketplace' })).toHaveAttribute(
- 'href',
- 'https://console.aws.amazon.com/billing/home#/bills'
- )
- })
- it('does not render Vercel CTA when redirect URL is unavailable', () => {
- mockUseVercelRedirectQuery.mockReturnValue({
- data: undefined,
- isLoading: false,
- isError: false,
- })
- render(
- <PartnerManagedResource
- managedBy={MANAGED_BY.VERCEL_MARKETPLACE}
- resource="Organization plans"
- cta={{ installationId: 'vercel-installation-id', path: '/settings' }}
- />
- )
- expect(
- screen.getByText('Organization plans are managed by Vercel Marketplace')
- ).toBeInTheDocument()
- expect(screen.queryByRole('link', { name: /view organization plans/i })).toBeNull()
- })
- })
|