OrganizationDropdown.test.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { screen, within } from '@testing-library/react'
  2. import { beforeEach, describe, expect, it, vi } from 'vitest'
  3. import { OrganizationDropdown } from './OrganizationDropdown'
  4. import { MANAGED_BY } from '@/lib/constants/infrastructure'
  5. import { createMockOrganization, render } from '@/tests/helpers'
  6. const { mockUseIsFeatureEnabled, mockUseOrganizationsQuery, mockUseSelectedOrganizationQuery } =
  7. vi.hoisted(() => ({
  8. mockUseIsFeatureEnabled: vi.fn(),
  9. mockUseOrganizationsQuery: vi.fn(),
  10. mockUseSelectedOrganizationQuery: vi.fn(),
  11. }))
  12. vi.mock('@/hooks/misc/useIsFeatureEnabled', () => ({
  13. useIsFeatureEnabled: mockUseIsFeatureEnabled,
  14. }))
  15. vi.mock('@/data/organizations/organizations-query', () => ({
  16. useOrganizationsQuery: mockUseOrganizationsQuery,
  17. }))
  18. vi.mock('@/hooks/misc/useSelectedOrganization', () => ({
  19. useSelectedOrganizationQuery: mockUseSelectedOrganizationQuery,
  20. }))
  21. vi.mock('@/components/ui/PartnerIcon', () => ({
  22. default: ({ organization }: { organization: { managed_by: string } }) =>
  23. organization.managed_by === MANAGED_BY.BRIVEN ? null : <div data-testid="partner-icon" />,
  24. }))
  25. describe('OrganizationDropdown', () => {
  26. beforeEach(() => {
  27. vi.clearAllMocks()
  28. mockUseIsFeatureEnabled.mockReturnValue(false)
  29. mockUseOrganizationsQuery.mockReturnValue({
  30. data: [
  31. createMockOrganization({ slug: 'org-one', name: 'Org One' }),
  32. createMockOrganization({ slug: 'org-two', name: 'Org Two' }),
  33. ],
  34. isPending: false,
  35. isError: false,
  36. })
  37. })
  38. it('renders partner icon in selected organization area for managed organizations', () => {
  39. mockUseSelectedOrganizationQuery.mockReturnValue({
  40. data: createMockOrganization({
  41. slug: 'org-one',
  42. name: 'Org One',
  43. managed_by: MANAGED_BY.AWS_MARKETPLACE,
  44. }),
  45. })
  46. render(<OrganizationDropdown />)
  47. const selectedLink = screen.getByRole('link', { name: /org one/i })
  48. expect(within(selectedLink).getByTestId('partner-icon')).toBeInTheDocument()
  49. })
  50. it('does not render partner icon in selected organization area for Briven-managed orgs', () => {
  51. mockUseSelectedOrganizationQuery.mockReturnValue({
  52. data: createMockOrganization({
  53. slug: 'org-one',
  54. name: 'Org One',
  55. managed_by: MANAGED_BY.BRIVEN,
  56. }),
  57. })
  58. render(<OrganizationDropdown />)
  59. const selectedLink = screen.getByRole('link', { name: /org one/i })
  60. expect(within(selectedLink).queryByTestId('partner-icon')).toBeNull()
  61. })
  62. })