import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';

import { PageSkeleton } from './page-skeleton';

describe('PageSkeleton', () => {
  it('renders with role=status and aria-busy', () => {
    render(<PageSkeleton />);
    const el = screen.getByRole('status', { name: 'Loading page content' });
    expect(el).toHaveAttribute('aria-busy', 'true');
  });

  it('renders header skeleton by default', () => {
    const { container } = render(<PageSkeleton />);
    const skeletons = container.querySelectorAll('[aria-label="Loading"]');
    expect(skeletons.length).toBeGreaterThan(0);
  });

  it('renders default 4 content rows', () => {
    const { container } = render(<PageSkeleton />);
    const skeletons = container.querySelectorAll('[aria-label="Loading"]');
    expect(skeletons.length).toBeGreaterThanOrEqual(6);
  });

  it('renders stat cards when showStats=true', () => {
    const { container } = render(<PageSkeleton showStats />);
    const skeletons = container.querySelectorAll('[aria-label="Loading"]');
    expect(skeletons.length).toBeGreaterThanOrEqual(12);
  });

  it('does not render header when showHeader=false', () => {
    const { container } = render(<PageSkeleton showHeader={false} />);
    const skeletons = container.querySelectorAll('[aria-label="Loading"]');
    expect(skeletons.length).toBeLessThan(12);
  });

  it('renders custom row count', () => {
    const { container } = render(<PageSkeleton rows={2} showHeader={false} />);
    const skeletons = container.querySelectorAll('[aria-label="Loading"]');
    expect(skeletons.length).toBe(4);
  });

  it('applies custom className', () => {
    render(<PageSkeleton className="mt-8" />);
    const el = screen.getByRole('status', { name: 'Loading page content' });
    expect(el).toHaveClass('mt-8');
  });

  it('has aria-label for screen readers', () => {
    render(<PageSkeleton />);
    const el = screen.getByRole('status', { name: 'Loading page content' });
    expect(el).toHaveAttribute('aria-label', 'Loading page content');
  });
});
