import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { CompactHeader } from '../compact-header'; describe('CompactHeader', () => { it('renders a header element', () => { render(); expect(screen.getByRole('banner')).toBeInTheDocument(); }); it('renders logo when provided', () => { render(} />); expect(screen.getByTestId('logo')).toBeInTheDocument(); }); it('renders breadcrumb when provided', () => { render(Trang chủ} />); expect(screen.getByText('Trang chủ')).toBeInTheDocument(); }); it('renders search slot when provided', () => { render(} />); expect(screen.getByTestId('search')).toBeInTheDocument(); }); it('renders actions when provided', () => { render(Đăng nhập} />); expect(screen.getByTestId('act')).toBeInTheDocument(); }); it('does not render logo slot when omitted', () => { const { container } = render(); // no extra wrapping div for logo const header = container.querySelector('header') as HTMLElement; // Slot divs: just the ml-auto actions div should be present expect(header.children.length).toBe(1); }); it('is sticky and has border-b class', () => { render(); expect(screen.getByRole('banner')).toHaveClass('sticky', 'border-b'); }); it('merges custom className', () => { render(); expect(screen.getByRole('banner')).toHaveClass('custom-header'); }); });