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();
})