1
resposta

Solução

Também adicionei as minhas soluções que um valor excedente de saque não era válido.

` <button type='submit'

            disabled=
                    {valores.valor === 0 || valores.transacao === ''
                        || (valores.transacao === 'saque' && saldo < valores.valor)}
            >
                Realizar operação
    </button>

`

it("Não chama realizar transação quando botão é clicado sem preenchimento algum", ()=>{


    const realizarTransacao = jest.fn();

    render(<Conta saldo={1000} realizarTransacao={realizarTransacao} />);

    fireEvent.click(screen.getByText("Realizar operação"));
    expect(realizarTransacao).not.toHaveBeenCalled();
})

it("Não chama realizar transação quando botão é clicado sem tipo de transação", 
()=>{


    const realizarTransacao = jest.fn();

    render(<Conta saldo={1000} realizarTransacao={realizarTransacao} />);

    const transacao = screen.getByLabelText(`Saque`);

    fireEvent.change(screen.getByTestId("valor"), {target: {value: "700"}}); 

    fireEvent.click(screen.getByText("Realizar operação"));
    expect(realizarTransacao).not.toHaveBeenCalled();
})


it("Não chama realizar transação quando botão é clicado com valor excedente de saque", 
()=>{


    const realizarTransacao = jest.fn();

    render(<Conta saldo={1000} realizarTransacao={realizarTransacao} />);

    const transacao = screen.getByLabelText(`Saque`);

    fireEvent.click(transacao, {target: {value: 'saque'}});
    fireEvent.change(screen.getByTestId("valor"), {target: {value: "1100"}}); 

    fireEvent.click(screen.getByText("Realizar operação"));
    expect(realizarTransacao).not.toHaveBeenCalled();
})


it("Chama realizar transação quando botão é clicado com valor valido", ()=>{


    const realizarTransacao = jest.fn();

    render(<Conta saldo={1000} realizarTransacao={realizarTransacao} />);

    const transacao = screen.getByLabelText(`Saque`);

    fireEvent.click(transacao, {target: {value: 'saque'}});
    fireEvent.change(screen.getByTestId("valor"), {target: {value: "10"}}); 
    fireEvent.click(screen.getByText("Realizar operação"));

    expect(realizarTransacao).toHaveBeenCalled();
})

1 resposta

Excelente, Emily.

Muito bacana utilizar o React Testing Library para desenvolver testes, não é?