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

import DecayPatternBadge from './DecayPatternBadge';

describe('DecayPatternBadge', () => {
  it('renders Gradual Decay badge for gradual_decay pattern', () => {
    render(<DecayPatternBadge pattern="gradual_decay" />);
    expect(screen.getByText('Gradual Decay')).toBeInTheDocument();
  });

  it('renders Step Drop badge for step_drop pattern', () => {
    render(<DecayPatternBadge pattern="step_drop" />);
    expect(screen.getByText('Step Drop')).toBeInTheDocument();
  });

  it('renders Post-Update Decline badge for post_update_decline pattern', () => {
    render(<DecayPatternBadge pattern="post_update_decline" />);
    expect(screen.getByText('Post-Update Decline')).toBeInTheDocument();
  });

  it('renders Query Mix Erosion badge for query_mix_erosion pattern', () => {
    render(<DecayPatternBadge pattern="query_mix_erosion" />);
    expect(screen.getByText('Query Mix Erosion')).toBeInTheDocument();
  });

  it('renders Position Drift badge for position_drift pattern', () => {
    render(<DecayPatternBadge pattern="position_drift" />);
    expect(screen.getByText('Position Drift')).toBeInTheDocument();
  });

  it('renders Seasonal Decay badge for seasonal_normalized_decay pattern', () => {
    render(<DecayPatternBadge pattern="seasonal_normalized_decay" />);
    expect(screen.getByText('Seasonal Decay')).toBeInTheDocument();
  });

  it('renders Volatility badge for volatility pattern', () => {
    render(<DecayPatternBadge pattern="volatility" />);
    expect(screen.getByText('Volatility')).toBeInTheDocument();
  });

  it('renders raw pattern for unknown patterns', () => {
    // @ts-expect-error Testing unknown pattern handling
    render(<DecayPatternBadge pattern="unknown_pattern" />);
    expect(screen.getByText('unknown_pattern')).toBeInTheDocument();
  });

  it('applies custom className', () => {
    const { container } = render(
      <DecayPatternBadge pattern="gradual_decay" className="custom-class" />,
    );
    const badge = container.querySelector('.custom-class');
    expect(badge).toBeInTheDocument();
  });
});
