import { render, screen, fireEvent } from '@testing-library/react'; import UserInfoModal from '../UserInfoModal'; import { AuthProvider } from '@/client/home/hooks/AuthProvider'; // Mock useAuth jest.mock('@/client/home-shadcn/hooks/AuthProvider', () => ({ useAuth: () => ({ user: { id: 1, username: 'testuser', nickname: '测试用户', email: 'test@example.com', phone: '13800138000', userType: 'premium', remainingCount: 500, expireAt: '2025-12-31T23:59:59Z', createdAt: '2024-01-01T00:00:00Z' }, isAuthenticated: true, logout: jest.fn() }) })); describe('UserInfoModal', () => { const mockOnClose = jest.fn(); it('renders correctly when open', () => { render( ); expect(screen.getByText('用户中心')).toBeInTheDocument(); expect(screen.getByText('测试用户')).toBeInTheDocument(); expect(screen.getByText('@testuser')).toBeInTheDocument(); }); it('displays tabs correctly', () => { render( ); expect(screen.getByText('个人信息')).toBeInTheDocument(); expect(screen.getByText('密码修改')).toBeInTheDocument(); expect(screen.getByText('充值记录')).toBeInTheDocument(); }); it('closes when close button is clicked', () => { render( ); fireEvent.click(screen.getByText('✕')); expect(mockOnClose).toHaveBeenCalled(); }); it('does not render when closed', () => { const { container } = render( ); expect(container.querySelector('.fixed')).not.toBeInTheDocument(); }); });