diff --git a/exercicios/para-casa/entregas/Camila-Lima/resolucao.js b/exercicios/para-casa/entregas/Camila-Lima/resolucao.js new file mode 100644 index 0000000..8abb3d8 --- /dev/null +++ b/exercicios/para-casa/entregas/Camila-Lima/resolucao.js @@ -0,0 +1,45 @@ +// Considere um objeto que represente uma conta bancária, a conta possui o nome +// do titular, o saldo e o limite da conta. +// É possível fazer operações de consulta de saldo, saque e depósito. +// No caso de saque é necessário verificar se existe saldo suficiente para retirada, +// caso o cliente não tenha saldo suficiente para a operação, mas possua limite disponível +// (e suficiente), o saque poderá ocorrer, nesses casos o saldo do cliente ficará negativo após o saque. +// Além disso, o limite de uma conta pode ser reajustado (para mais e para menos) ou desativado. + +// Use a abordagem Red - Green - Refactor para desenvolver essa aplicação. + +class Cliente{ + constructor(nome, saldo, limite){ + this.nome = nome; + this.saldo = saldo; + this.limite = limite; + } + + consultarSaldo(){ + return this.saldo + } + + + deposito(valor){ + this.saldo = this.saldo + valor + return this.consultarSaldo() + } + + ajusteLimite(deposito){ + this.limite = this.limite + deposito; + return this.limite + } + + saque(valor){ + let saldoLimite = this.saldo + this.limite; + if(valor > saldoLimite ){ + throw new Error('Sem saldo disponível para saque') + } + else{ + this.saldo = this.saldo - valor + } + return this.consultarSaldo() + } +} + +module.exports = Cliente \ No newline at end of file diff --git a/exercicios/para-casa/entregas/Camila-Lima/resolucao.test.js b/exercicios/para-casa/entregas/Camila-Lima/resolucao.test.js new file mode 100644 index 0000000..3771669 --- /dev/null +++ b/exercicios/para-casa/entregas/Camila-Lima/resolucao.test.js @@ -0,0 +1,31 @@ +const Cliente = require('./Resolucao') + +describe("Cliente", () => { + //validar depósito + + let cliente + + beforeEach(()=>{ + cliente = new Cliente("Maria", 700, 250) + }) + + test("validar depósito", () =>{ + expect(cliente.deposito(200)).toEqual(900) + }) + + //consultar Saldo + test("validar consultar estoque", () =>{ + expect(cliente.consultarSaldo()).toEqual(700) + }) + + //validar Saque + test("validar saque", () =>{ + expect(cliente.saque(10)).toEqual(690) + }) + + //validar Saque com valor não disponível + test("validar Saque com valor não disponível", () =>{ + expect(() => {cliente.saque(1000);}).toThrow(); + }) + + }) \ No newline at end of file