SettingsMenu.selfhosted.test.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { renderHook } from '@testing-library/react'
  2. import { describe, expect, it, vi } from 'vitest'
  3. import { useGenerateSettingsMenu } from './SettingsMenu.utils'
  4. vi.mock('@/lib/constants', async () => {
  5. const actual = await vi.importActual<Record<string, unknown>>('@/lib/constants')
  6. return {
  7. ...actual,
  8. IS_PLATFORM: false,
  9. }
  10. })
  11. vi.mock('common', () => ({
  12. useFlag: vi.fn().mockReturnValue(false),
  13. useParams: vi.fn().mockReturnValue({ ref: 'project-ref' }),
  14. }))
  15. vi.mock('@/hooks/misc/useSelectedOrganization', () => ({
  16. useSelectedOrganizationQuery: vi.fn().mockReturnValue({ data: { slug: 'my-org' } }),
  17. }))
  18. vi.mock('@/hooks/misc/useSelectedProject', () => ({
  19. useSelectedProjectQuery: vi.fn().mockReturnValue({ data: { status: 'ACTIVE_HEALTHY' } }),
  20. }))
  21. vi.mock('@/hooks/misc/useIsFeatureEnabled', () => ({
  22. useIsFeatureEnabled: vi
  23. .fn()
  24. .mockReturnValue({ projectSettingsLegacyJwtKeys: false, billingAll: true }),
  25. }))
  26. vi.mock('@/components/interfaces/App/FeaturePreview/FeaturePreviewContext', () => ({
  27. useIsPlatformWebhooksEnabled: vi.fn().mockReturnValue(false),
  28. }))
  29. describe('useGenerateSettingsMenu (self-hosted)', () => {
  30. it('includes Log Drains in self-hosted mode', () => {
  31. const { result } = renderHook(() => useGenerateSettingsMenu())
  32. const configGroup = result.current.find((group) => group.title === 'Configuration')
  33. expect(configGroup?.items.some((item) => item.key === 'log-drains')).toBe(true)
  34. })
  35. it('does not include dashboard settings in self-hosted mode', () => {
  36. const { result } = renderHook(() => useGenerateSettingsMenu())
  37. const configGroup = result.current.find((group) => group.title === 'Configuration')
  38. expect(configGroup?.items.some((item) => item.key === 'dashboard')).toBe(false)
  39. })
  40. it('does not include platform-only settings in self-hosted mode', () => {
  41. const { result } = renderHook(() => useGenerateSettingsMenu())
  42. const configGroup = result.current.find((group) => group.title === 'Configuration')
  43. expect(configGroup?.items.some((item) => item.key === 'general')).toBe(false)
  44. expect(configGroup?.items.some((item) => item.key === 'api-keys')).toBe(false)
  45. expect(configGroup?.items.some((item) => item.key === 'infrastructure')).toBe(false)
  46. })
  47. })