import { render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { getOnchainKitConfig } from '@/core/OnchainKitConfig'; import { useIsInMiniApp } from '../hooks/useIsInMiniApp'; import { IfInMiniApp } from './IfInMiniApp'; vi.mock('@/core/OnchainKitConfig', () => ({ getOnchainKitConfig: vi.fn(), })); vi.mock('../hooks/useIsInMiniApp', () => ({ useIsInMiniApp: vi.fn(), })); describe('IfInMiniApp', () => { beforeEach(() => { vi.clearAllMocks(); }); it('renders children when in mini app and enabled', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any (getOnchainKitConfig as any).mockReturnValue({ enabled: true }); // eslint-disable-next-line @typescript-eslint/no-explicit-any (useIsInMiniApp as any).mockReturnValue({ isInMiniApp: true }); render(
MiniApp Content
, ); expect(screen.getByTestId('miniapp-content')).toBeInTheDocument(); }); it('renders fallback when not in mini app', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any (getOnchainKitConfig as any).mockReturnValue({ enabled: true }); // eslint-disable-next-line @typescript-eslint/no-explicit-any (useIsInMiniApp as any).mockReturnValue({ isInMiniApp: false }); render( Fallback Content} >
MiniApp Content
, ); expect(screen.getByTestId('fallback')).toBeInTheDocument(); expect(screen.queryByTestId('miniapp-content')).not.toBeInTheDocument(); }); it('renders fallback when minikit is not enabled', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any (getOnchainKitConfig as any).mockReturnValue({ enabled: false }); // eslint-disable-next-line @typescript-eslint/no-explicit-any (useIsInMiniApp as any).mockReturnValue({ isInMiniApp: true }); render( Fallback Content} >
MiniApp Content
, ); expect(screen.getByTestId('fallback')).toBeInTheDocument(); expect(screen.queryByTestId('miniapp-content')).not.toBeInTheDocument(); }); it('renders fallback when minikit config is null', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any (getOnchainKitConfig as any).mockReturnValue(null); // eslint-disable-next-line @typescript-eslint/no-explicit-any (useIsInMiniApp as any).mockReturnValue({ isInMiniApp: true }); render( Fallback Content} >
MiniApp Content
, ); expect(screen.getByTestId('fallback')).toBeInTheDocument(); expect(screen.queryByTestId('miniapp-content')).not.toBeInTheDocument(); }); it('renders null when no fallback provided and conditions not met', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any (getOnchainKitConfig as any).mockReturnValue({ enabled: false }); // eslint-disable-next-line @typescript-eslint/no-explicit-any (useIsInMiniApp as any).mockReturnValue({ isInMiniApp: false }); const { container } = render(
MiniApp Content
, ); expect(container.firstChild).toBeNull(); }); it('renders null when no fallback provided and not in miniapp', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any (getOnchainKitConfig as any).mockReturnValue({ enabled: true }); // eslint-disable-next-line @typescript-eslint/no-explicit-any (useIsInMiniApp as any).mockReturnValue({ isInMiniApp: false }); const { container } = render(
MiniApp Content
, ); expect(container.firstChild).toBeNull(); }); });