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

import { InlineLoader } from './inline-loader';

describe('InlineLoader', () => {
  it('renders with role=status', () => {
    render(<InlineLoader />);
    expect(screen.getByRole('status')).toBeInTheDocument();
  });

  it('shows default label "Loading…"', () => {
    render(<InlineLoader />);
    expect(screen.getByText('Loading…')).toBeInTheDocument();
  });

  it('shows custom label', () => {
    render(<InlineLoader label="Fetching results…" />);
    expect(screen.getByText('Fetching results…')).toBeInTheDocument();
  });

  it('has aria-live=polite', () => {
    render(<InlineLoader />);
    expect(screen.getByRole('status')).toHaveAttribute('aria-live', 'polite');
  });

  it('renders spinner svg', () => {
    const { container } = render(<InlineLoader />);
    expect(container.querySelector('svg')).toBeInTheDocument();
  });

  it('applies centered class when centered=true', () => {
    render(<InlineLoader centered />);
    expect(screen.getByRole('status')).toHaveClass('justify-center');
  });

  it('does not apply justify-center by default', () => {
    render(<InlineLoader />);
    expect(screen.getByRole('status')).not.toHaveClass('justify-center');
  });

  it('applies custom className', () => {
    render(<InlineLoader className="py-8" />);
    expect(screen.getByRole('status')).toHaveClass('py-8');
  });
});
