PartnerIcon.test.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { describe, expect, it } from 'vitest'
  2. import PartnerIcon, { getDefaultPartnerTooltipText, getPartnerTooltipText } from './PartnerIcon'
  3. import { MANAGED_BY } from '@/lib/constants/infrastructure'
  4. import { render } from '@/tests/helpers'
  5. import type { Organization } from '@/types'
  6. describe('PartnerIcon tooltip copy', () => {
  7. it('returns provider-specific default tooltip copy for AWS, Vercel, and Stripe', () => {
  8. expect(getDefaultPartnerTooltipText(MANAGED_BY.VERCEL_MARKETPLACE)).toBe(
  9. 'Managed via Vercel Marketplace'
  10. )
  11. expect(getDefaultPartnerTooltipText(MANAGED_BY.AWS_MARKETPLACE)).toBe(
  12. 'Billed via AWS Marketplace'
  13. )
  14. expect(getDefaultPartnerTooltipText(MANAGED_BY.STRIPE_PROJECTS)).toBe('Connected to Stripe')
  15. })
  16. it('uses custom tooltip text when provided', () => {
  17. expect(
  18. getPartnerTooltipText({
  19. managedBy: MANAGED_BY.VERCEL_MARKETPLACE,
  20. tooltipText: 'Managed by Vercel Marketplace.',
  21. })
  22. ).toBe('Managed by Vercel Marketplace.')
  23. })
  24. it('falls back to default tooltip text when custom tooltip is not provided', () => {
  25. expect(
  26. getPartnerTooltipText({
  27. managedBy: MANAGED_BY.AWS_MARKETPLACE,
  28. })
  29. ).toBe('Billed via AWS Marketplace')
  30. })
  31. it('renders an icon element for Stripe organizations', () => {
  32. const organization = {
  33. managed_by: MANAGED_BY.STRIPE_PROJECTS,
  34. } as Pick<Organization, 'managed_by'>
  35. const { container } = render(
  36. PartnerIcon({
  37. organization,
  38. showTooltip: false,
  39. })
  40. )
  41. expect(container.querySelector('svg')).toBeTruthy()
  42. })
  43. })