/* eslint-disable @typescript-eslint/no-explicit-any */ import { render, screen, fireEvent } from '@testing-library/react' import { describe, it, expect, vi } from 'vitest' import { AppSidebar } from './AppSidebar' import { useSidebarStore } from '@/lib/stores/sidebar-store' // Mock Tooltip components to avoid Radix UI async issues in tests vi.mock('@/components/ui/tooltip', () => ({ TooltipProvider: ({ children }: { children: React.ReactNode }) => <>{children}, Tooltip: ({ children }: { children: React.ReactNode }) => <>{children}, TooltipTrigger: ({ children }: { children: React.ReactNode }) => <>{children}, TooltipContent: ({ children }: { children: React.ReactNode }) =>
{children}
, })) describe('AppSidebar', () => { it('renders correctly when expanded', () => { render() // With mocked t() returning keys, check for translation key strings expect(screen.getByText('common.appName')).toBeDefined() expect(screen.getByText('navigation.sources')).toBeDefined() expect(screen.getByText('navigation.notebooks')).toBeDefined() }) it('toggles collapse state when clicking handle', () => { const toggleCollapse = vi.fn() vi.mocked(useSidebarStore).mockReturnValue({ isCollapsed: false, toggleCollapse, } as any) render() fireEvent.click(screen.getByTestId('sidebar-toggle')) expect(toggleCollapse).toHaveBeenCalled() }) it('shows collapsed view when isCollapsed is true', () => { vi.mocked(useSidebarStore).mockReturnValue({ isCollapsed: true, toggleCollapse: vi.fn(), } as any) render() // In collapsed mode, app name shouldn't be visible (as text) expect(screen.queryByText('common.appName')).toBeNull() }) })