/* eslint-disable max-statements */
import { describe, expect, it } from '@jest/globals';
import { render, screen as rtlScreen } from '@testing-library/react';
import { Button } from './button';
describe('Button', () => {
  it('renders the button body', () => {
    const body = 'aliquid';
    render();
    expect(rtlScreen.getByRole('button')).toHaveTextContent(body);
  });
  it('renders a disabled button', () => {
    const body = 'quod';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toBeDisabled();
  });
  it('renders a button currently loading something', () => {
    const body = 'quod';
    render();
    expect(rtlScreen.getByRole('button', { busy: true })).toHaveAccessibleName(
      body
    );
  });
  it('renders a pressed button', () => {
    const body = 'quod';
    render();
    expect(
      rtlScreen.getByRole('button', { pressed: true })
    ).toHaveAccessibleName(body);
  });
  it('renders a submit button', () => {
    const body = 'dolorum';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveAttribute(
      'type',
      'submit'
    );
  });
  it('renders a reset button', () => {
    const body = 'consectetur';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveAttribute(
      'type',
      'reset'
    );
  });
  it('renders a primary button', () => {
    const body = 'iure';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--primary'
    );
  });
  it('renders a secondary button', () => {
    const body = 'et';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--secondary'
    );
  });
  it('renders a tertiary button', () => {
    const body = 'quo';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--tertiary'
    );
  });
  it('renders a neutral button', () => {
    const body = 'voluptatem';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--neutral'
    );
  });
  it('renders a circle button', () => {
    const body = 'laudantium';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--circle'
    );
  });
  it('renders a rectangle button', () => {
    const body = 'ut';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--rectangle'
    );
  });
  it('renders a square button', () => {
    const body = 'non';
    render();
    expect(rtlScreen.getByRole('button', { name: body })).toHaveClass(
      'btn--square'
    );
  });
});