import { fireEvent, render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' import * as React from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' import Nav from '@/app/components/header/nav' import { AppModeEnum } from '@/types/app' const mockPush = vi.fn() const mockSetAppDetail = vi.fn() const mockOnCreate = vi.fn() const mockOnLoadMore = vi.fn() let mockSelectedSegment = 'app' let mockIsCurrentWorkspaceEditor = true vi.mock('react-i18next', () => ({ useTranslation: () => ({ t: (key: string) => key, }), })) vi.mock('@/next/navigation', () => ({ useSelectedLayoutSegment: () => mockSelectedSegment, useRouter: () => ({ push: mockPush, }), })) vi.mock('@/next/link', () => ({ default: ({ href, children, }: { href: string children?: React.ReactNode }) => {children}, })) vi.mock('@/app/components/app/store', () => ({ useStore: () => mockSetAppDetail, })) vi.mock('@/context/app-context', () => ({ useAppContext: () => ({ isCurrentWorkspaceEditor: mockIsCurrentWorkspaceEditor, }), })) const navigationItems = [ { id: 'app-1', name: 'Alpha', link: '/app/app-1/configuration', icon_type: 'emoji' as const, icon: '🤖', icon_background: '#FFEAD5', icon_url: null, mode: AppModeEnum.CHAT, }, { id: 'app-2', name: 'Bravo', link: '/app/app-2/workflow', icon_type: 'emoji' as const, icon: '⚙️', icon_background: '#E0F2FE', icon_url: null, mode: AppModeEnum.WORKFLOW, }, ] const curNav = { id: 'app-1', name: 'Alpha', icon_type: 'emoji' as const, icon: '🤖', icon_background: '#FFEAD5', icon_url: null, mode: AppModeEnum.CHAT, } const renderNav = (nav = curNav) => { return render(