import { renderHook } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' import { useShowMultigresLogs } from './useShowMultigresLogs' const mockUseFlag = vi.fn() const mockUseIsHighAvailability = vi.fn() vi.mock('common', async (importOriginal) => ({ ...(await importOriginal()), useFlag: (name: string) => mockUseFlag(name), })) vi.mock('./useSelectedProject', () => ({ useIsHighAvailability: () => mockUseIsHighAvailability(), })) describe('useShowMultigresLogs', () => { beforeEach(() => { mockUseFlag.mockReset() mockUseIsHighAvailability.mockReset() }) it('returns true only when the multigresLogs flag and high availability are both enabled', () => { mockUseFlag.mockReturnValue(true) mockUseIsHighAvailability.mockReturnValue(true) const { result } = renderHook(() => useShowMultigresLogs()) expect(result.current).toBe(true) expect(mockUseFlag).toHaveBeenCalledWith('multigresLogs') }) it('returns false when the flag is off, even on a high availability project', () => { mockUseFlag.mockReturnValue(false) mockUseIsHighAvailability.mockReturnValue(true) const { result } = renderHook(() => useShowMultigresLogs()) expect(result.current).toBe(false) }) it('returns false when the project is not high availability, even with the flag on', () => { mockUseFlag.mockReturnValue(true) mockUseIsHighAvailability.mockReturnValue(false) const { result } = renderHook(() => useShowMultigresLogs()) expect(result.current).toBe(false) }) it('returns false when both the flag and high availability are off', () => { mockUseFlag.mockReturnValue(false) mockUseIsHighAvailability.mockReturnValue(false) const { result } = renderHook(() => useShowMultigresLogs()) expect(result.current).toBe(false) }) })