/** * AdminSectionHeader Component Tests * * Tests for the AdminSectionHeader component that provides a semantic header * for sections within admin pages. */ import React from 'react'; import { render, screen } from '@testing-library/react'; import { AdminSectionHeader } from './AdminSectionHeader'; import { describe, it, expect, vi } from 'vitest'; // Mock the SectionHeader component vi.mock('@/ui/SectionHeader', () => ({ SectionHeader: ({ title, description, actions, variant }: any) => (

{title}

{description &&

{description}

} {actions &&
{actions}
}
), })); describe('AdminSectionHeader', () => { it('should render with title only', () => { render( ); expect(screen.getByText('User Statistics')).toBeTruthy(); }); it('should render with title and description', () => { render( ); expect(screen.getByText('User Statistics')).toBeTruthy(); expect(screen.getByText('Overview of user activity and engagement')).toBeTruthy(); }); it('should render with title, description, and actions', () => { const actions = ; render( ); expect(screen.getByText('User Statistics')).toBeTruthy(); expect(screen.getByText('Overview of user activity')).toBeTruthy(); expect(screen.getByTestId('action-btn')).toBeTruthy(); expect(screen.getByText('Refresh')).toBeTruthy(); }); it('should render with multiple action buttons', () => { const actions = (
); render( ); expect(screen.getByText('Data Table')).toBeTruthy(); expect(screen.getByText('Manage your data')).toBeTruthy(); expect(screen.getByText('Export')).toBeTruthy(); expect(screen.getByText('Filter')).toBeTruthy(); expect(screen.getByText('Sort')).toBeTruthy(); }); it('should render with complex actions component', () => { const ComplexActions = () => (
); render( } /> ); expect(screen.getByText('Complex Section')).toBeTruthy(); expect(screen.getByText('With multiple actions')).toBeTruthy(); expect(screen.getByText('Primary')).toBeTruthy(); expect(screen.getByText('Secondary')).toBeTruthy(); }); it('should render with long title and description', () => { render( ); expect(screen.getByText(/This is a very long section header title/)).toBeTruthy(); expect(screen.getByText(/This is an even longer description/)).toBeTruthy(); }); it('should render with special characters in text', () => { render( ); expect(screen.getByText(/Special & Characters/)).toBeTruthy(); expect(screen.getByText(/Quotes/)).toBeTruthy(); }); });