import { describe, expect, it } from '@jest/globals';
import { render, screen as rtlScreen } from '@testing-library/react';
import NextImage from 'next/image';
import { Card } from './card';
import { CardFooter } from './card-footer';
import { CardHeader } from './card-header';
import { CardMeta } from './card-meta';
describe('Card', () => {
  it('renders its children', () => {
    const body = 'eveniet error voluptas';
    render({body});
    expect(rtlScreen.getByText(body)).toBeInTheDocument();
  });
  it('can render a cover in the card header', () => {
    const altTxt = 'quo expedita eveniet';
    render(
      
        }
      >
        
      
    );
    expect(rtlScreen.getByRole('img', { name: altTxt })).toBeInTheDocument();
  });
  it('does not render a cover without card header', () => {
    const body = 'necessitatibus maiores sed';
    const altTxt = 'quo expedita eveniet';
    render(
      
        }
      >
        {body}
      
    );
    expect(
      rtlScreen.queryByRole('img', { name: altTxt })
    ).not.toBeInTheDocument();
  });
  it('can render some meta in the card footer', () => {
    const term = 'ut';
    const desc = 'repudiandae';
    render(
      }
      >
        
      
    );
    expect(rtlScreen.getByRole('term')).toHaveTextContent(term);
    expect(rtlScreen.getByRole('definition')).toHaveTextContent(desc);
  });
  it('does not render the meta without card footer', () => {
    const body = 'rerum dolore et';
    const term = 'ut';
    const desc = 'repudiandae';
    render(
      }
      >
        {body}
      
    );
    expect(
      rtlScreen.queryByRole('term', { name: term })
    ).not.toBeInTheDocument();
    expect(
      rtlScreen.queryByRole('definition', { name: desc })
    ).not.toBeInTheDocument();
  });
  it('can render a card as link to another page', () => {
    const body = 'Et qui harum voluptas est quos qui.';
    const cta = 'asperiores optio incidunt';
    const target = '#molestiae';
    render(
      
        {body}
      
    );
    expect(rtlScreen.getByRole('link', { name: cta })).toHaveAttribute(
      'href',
      target
    );
  });
  it('can render a card with centered text', () => {
    const body = 'Et qui harum voluptas est quos qui.';
    const label = 'asperiores optio incidunt';
    render(
      
        {body}
      
    );
    expect(rtlScreen.getByLabelText(label)).toHaveClass('wrapper--centered');
  });
});