Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
2.5 kB
5
Indexable
Never
import userEvent from '@testing-library/user-event';
import { screen, waitFor } from '@testing-library/react';
import App from '../App';
import { renderWithRouterAndRedux } from './helpers/renderWith';

const emailID = 'email-input';
const passwordID = 'password-input';

it('Verifica se o campo email e password são renderizados na tela', () => {
  renderWithRouterAndRedux(<App />);
  const email = screen.getByTestId(emailID);
  const password = screen.getByTestId(passwordID);

  expect(email).toBeInTheDocument();
  expect(password).toBeInTheDocument();
});

it('Verifica se o botão de login é habilitado/desabilitado conforme email e password são válidos ou não', async () => {
  renderWithRouterAndRedux(<App />);
  const user = userEvent.setup();
  const okEmail = 'email@domain.com';
  const notOkEmail = 'emaildomain.com';
  const okPassword = '1029384';
  const notOkPassword = '1029';
  const email = screen.getByTestId(emailID);
  const password = screen.getByTestId(passwordID);
  const btn = screen.getByRole('button');

  it('1o Teste', async () => {
    await user.type(email, notOkEmail);
    await user.type(password, notOkPassword);
    expect(btn).toBeDisabled();
    await user.clear(email);
    await user.clear(password);
  });

  it('2o Teste', async () => {
    await user.type(email, notOkEmail);
    await user.type(password, okPassword);
    expect(btn).toBeDisabled();
    await user.clear(email);
    await user.clear(password);
  });

  it('3o Teste', async () => {
    await user.type(email, okEmail);
    await user.type(password, notOkPassword);
    expect(btn).toBeDisabled();
    await user.clear(email);
    await user.clear(password);
  });

  it('4o Teste', async () => {
    await user.type(email, okEmail);
    await user.type(password, okPassword);
    expect(btn).toBeEnabled();
  });
});

it('Verifica se a aplicação é redirecionada para a rota da carteira se email e password forem válidos', async () => {
  renderWithRouterAndRedux(<App />);
  const user = userEvent.setup();
  const okEmail = 'email@domain.com';
  const okPassword = '1029384';
  const email = screen.getByTestId(emailID);
  const password = screen.getByTestId(passwordID);
  const btn = screen.getByRole('button');

  await user.type(email, okEmail);
  await user.type(password, okPassword);
  expect(btn).toBeEnabled();
  await user.click(btn);
  waitFor(() => expect(global.window.location.pathname).toEqual('/carteira'));
});