From 5a6400745bd930803d866e563365a4c65f93550d Mon Sep 17 00:00:00 2001 From: elizapimentel Date: Sat, 8 Jun 2024 13:46:16 -0300 Subject: [PATCH 1/6] add jest and node dependencies --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f454b90..b202062 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,10 @@ "keywords": [], "author": "", "license": "ISC", + "devDependencies": { + "jest": "^29.7.0" + }, "dependencies": { - "jest": "^28.1.2" + "node": "^20.14.0" } } From 4a6cc533a2a165528379de7329dfb42863c756a5 Mon Sep 17 00:00:00 2001 From: elizapimentel Date: Sat, 8 Jun 2024 16:18:11 -0300 Subject: [PATCH 2/6] delete node v --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index b202062..9714535 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,6 @@ "license": "ISC", "devDependencies": { "jest": "^29.7.0" - }, - "dependencies": { - "node": "^20.14.0" } + } From 2b6bcd14ffa472e673a8991b6d8f967fe5974972 Mon Sep 17 00:00:00 2001 From: elizapimentel Date: Sat, 8 Jun 2024 16:19:30 -0300 Subject: [PATCH 3/6] =?UTF-8?q?add=20conversao=20para=20numeros=20em=20str?= =?UTF-8?q?ing=20e=20erro=20caso=20n=C3=A3o=20seja=20numero?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dominio/calculadora/Hora/valorHora.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/dominio/calculadora/Hora/valorHora.js b/src/dominio/calculadora/Hora/valorHora.js index be65388..dddbe25 100644 --- a/src/dominio/calculadora/Hora/valorHora.js +++ b/src/dominio/calculadora/Hora/valorHora.js @@ -4,6 +4,11 @@ const { } = require('../constantes/constantes') const calcularValorPorHora = (rendaMensal) => { + //converte valor para number + const renda = Number(rendaMensal); + if (isNaN(renda)) { + throw new TypeError('A renda mensal deve ser um número.'); + } const horasTrabalhadasPorMes = (HORAS_POR_DIA * DIAS_UTEIS_NO_MES); const valorPorHora = rendaMensal / horasTrabalhadasPorMes; From 45cdad25847fcef5b9ca4fb476e4fefc1a5c0af4 Mon Sep 17 00:00:00 2001 From: elizapimentel Date: Sat, 8 Jun 2024 16:21:52 -0300 Subject: [PATCH 4/6] add calculo valor hora --- .../ana-luiza-sampaio/valorHora.test.js | 0 .../eliza-pimentel/calcularPacote.test.js | 19 +++++++ .../eliza-pimentel/horasPorProjeto.test.js | 27 ++++++++++ .../eliza-pimentel/valorHora.test.js | 54 +++++++++++++++++++ .../eliza-pimentel/valorProjeto.test.js | 29 ++++++++++ .../exemplo-nome-sobrenome/valorHora.test.js | 0 6 files changed, 129 insertions(+) delete mode 100644 src/entregasDesafio/ana-luiza-sampaio/valorHora.test.js create mode 100644 src/entregasDesafio/eliza-pimentel/calcularPacote.test.js create mode 100644 src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js create mode 100644 src/entregasDesafio/eliza-pimentel/valorHora.test.js create mode 100644 src/entregasDesafio/eliza-pimentel/valorProjeto.test.js delete mode 100644 src/entregasDesafio/exemplo-nome-sobrenome/valorHora.test.js diff --git a/src/entregasDesafio/ana-luiza-sampaio/valorHora.test.js b/src/entregasDesafio/ana-luiza-sampaio/valorHora.test.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/entregasDesafio/eliza-pimentel/calcularPacote.test.js b/src/entregasDesafio/eliza-pimentel/calcularPacote.test.js new file mode 100644 index 0000000..63bf4ef --- /dev/null +++ b/src/entregasDesafio/eliza-pimentel/calcularPacote.test.js @@ -0,0 +1,19 @@ +const {calcularPacote} = require("../../dominio/calculadora/Projeto/pacote"); + +describe("Calcula pacote", () => { + test("Calcular pacote básico quando 23 horas", () => { + const retornado = calcularPacote(23); + const esperado = 'pacote_basico'; + expect(esperado).toBe(retornado) + }); + test("Calcular pacote intermediário quando 53 horas", () => { + const retornado = calcularPacote(53); + const esperado = 'pacote_intermediario'; + expect(esperado).toBe(retornado) + }); + test("Calcular pacote premium quando 199 horas", () => { + const retornado = calcularPacote(199); + const esperado = 'pacote_premium'; + expect(esperado).toBe(retornado) + }); +}) \ No newline at end of file diff --git a/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js b/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js new file mode 100644 index 0000000..5e9bab8 --- /dev/null +++ b/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js @@ -0,0 +1,27 @@ +const { calcularHorasDeProjeto } = require("../../dominio/calculadora/Projeto/horasPorProjeto"); + +describe("Calcular horas de projeto", () => { + test("Calcular horas de projeto - 1 Funcionalidade", () => { + const listaDeFuncionalidades = ['formulario']; + const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); + const esperado = 16; + expect(esperado).toBe(retornado); + }); + test("Calcular horas de projeto - 2 Funcionalidades", () => { + const listaDeFuncionalidades = ['formulario', 'formulario']; + const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); + const esperado = 32; + expect(esperado).toBe(retornado); + }); + test("calcular horas de projeto - 3 Páginas", () => { + const retorno = calcularHorasDeProjeto(['construcao_1_pagina', 'construcao_1_pagina', 'construcao_1_pagina']); + const esperado = 24; + expect(esperado).toBe(retorno) + }); + test("Calcular horas de projeto - 4 Funcionalidades diferentes", () => { + const listaDeFuncionalidades = ['formulario', 'responsividade', 'otimizacao_seo', 'construcao_1_pagina']; + const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); + const esperado = 56; + expect(esperado).toBe(retornado); + }) +}); \ No newline at end of file diff --git a/src/entregasDesafio/eliza-pimentel/valorHora.test.js b/src/entregasDesafio/eliza-pimentel/valorHora.test.js new file mode 100644 index 0000000..b312c17 --- /dev/null +++ b/src/entregasDesafio/eliza-pimentel/valorHora.test.js @@ -0,0 +1,54 @@ +const { calcularValorPorHora } = require('../../dominio/calculadora/Hora/valorHora'); + +describe('Calcular o valor da hora', () => { + test("Calcular o valor da hora - Renda mensal de 3000", () => { + const retorno = calcularValorPorHora(3000); + const esperado = 18; + expect(esperado).toBe(retorno); + }); + test("Calcular o valor da hora - Renda mensal de 4000", () => { + const retorno = calcularValorPorHora(4000); + const esperado = 23; + expect(esperado).toBe(retorno); + }); + test("Calcular o valor da hora - Renda mensal de 15000", () => { + const retorno = calcularValorPorHora(15000); + const esperado = 86; + expect(esperado).toBe(retorno); + }); + + test("Calcular o valor da hora - Renda mensal de 2000", () => { + const retorno = calcularValorPorHora(2000); + const esperado = 12; + expect(esperado).toBe(retorno); + }); + + // teste para renda mensal zero + test("Calcular o valor da hora - Renda mensal de 0", () => { + const retorno = calcularValorPorHora(0); + const esperado = 0; + expect(esperado).toBe(retorno); + }); + + // teste para verificar arredondamento + test("Calcular o valor da hora - Renda mensal de 3333", () => { + const retorno = calcularValorPorHora(3333); + const esperado = 19; + expect(esperado).toBe(retorno); + }); + + // teste para verificar entradas não numéricas + test("Calcular o valor da hora - Renda mensal como string '4000'", () => { + const retorno = calcularValorPorHora('4000'); + const esperado = 23; + expect(esperado).toBe(retorno); + }); + + test("Calcular o valor da hora - Renda mensal como string NAN 'quatrocendos mil'", () => { + expect(() => { + calcularValorPorHora('quatrocendos mil'); + }).toThrow(TypeError); + }); + + +}); \ No newline at end of file diff --git a/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js b/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js new file mode 100644 index 0000000..91d0b61 --- /dev/null +++ b/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js @@ -0,0 +1,29 @@ +const { calcularValorTotalProjeto } = require('../../dominio/calculadora/Projeto/valorProjeto'); +const pacote = require("../../dominio/calculadora/Projeto/pacote"); + +jest.mock("../../dominio/calculadora/Projeto/pacote"); + +describe('pacote basico', () => { + beforeAll(() => { + pacote.calcularPacote.mockReturnValue("pacote_basico") + }) + test('calcular valor total do projeto quando 30 horas e 30 reais/hora', () => { + const valorHora = 30; + const funcionalidades = ["formulario", "responsividade"]; + const retornado = calcularValorTotalProjeto(funcionalidades, valorHora); + const esperado = 1056; + expect(esperado).toBe(retornado); + }); + + test('calcular valor total do projeto quando 30 horas e 30 reais/hora - simulando mock', () => { + // pacote.calcularPacote.mockReturnValue("pacote_basico") + const valorHora = 30; + const funcionalidades = ["formulario", "responsividade"]; + const retornado = calcularValorTotalProjeto(funcionalidades, valorHora); + const esperado = 1056; + expect(esperado).toBe(retornado); + }); + + + +}) \ No newline at end of file diff --git a/src/entregasDesafio/exemplo-nome-sobrenome/valorHora.test.js b/src/entregasDesafio/exemplo-nome-sobrenome/valorHora.test.js deleted file mode 100644 index e69de29..0000000 From a49b0481e6f59c397f90d12b44a323564def0267 Mon Sep 17 00:00:00 2001 From: elizapimentel Date: Sat, 8 Jun 2024 16:33:24 -0300 Subject: [PATCH 5/6] add testes pacote intermediario e premium --- .../eliza-pimentel/valorProjeto.test.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js b/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js index 91d0b61..cdf5db4 100644 --- a/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js +++ b/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js @@ -23,7 +23,33 @@ describe('pacote basico', () => { const esperado = 1056; expect(esperado).toBe(retornado); }); +}); + + describe('pacote intermediario', () => { + beforeAll(() => { + pacote.calcularPacote.mockReturnValue("pacote_intermediario") + }) + test('calcular valor total do projeto quando 70 horas e 50 reais/hora', () => { + const valorHora = 50; + const funcionalidades = ["setup", "formulario", "responsividade", "otimizacao_seo", "integracao_mailchimp"]; + const retornado = calcularValorTotalProjeto(funcionalidades, valorHora); + const esperado = 4032; + expect(esperado).toBe(retornado); + }); + }); + + describe('pacote premium', () => { + beforeAll(() => { + pacote.calcularPacote.mockReturnValue("pacote_premium") + }) + test('calcular valor total do projeto quando 150 horas e 100 reais/hora', () => { + const valorHora = 100; + const funcionalidades = ["setup", "formulario", "responsividade", "otimizacao_seo", "integracao_mailchimp", "construcao_1_pagina", "integracao_api_propria"]; + const retornado = calcularValorTotalProjeto(funcionalidades, valorHora); + const esperado = 11040; + expect(esperado).toBe(retornado); + }); + }); -}) \ No newline at end of file From 5d541586e664e861c56ae4627df33b88bf92e14e Mon Sep 17 00:00:00 2001 From: elizapimentel Date: Sat, 8 Jun 2024 16:44:33 -0300 Subject: [PATCH 6/6] add novos testes --- .../eliza-pimentel/horasPorProjeto.test.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js b/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js index 5e9bab8..6209c84 100644 --- a/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js +++ b/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js @@ -23,5 +23,29 @@ describe("Calcular horas de projeto", () => { const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); const esperado = 56; expect(esperado).toBe(retornado); - }) + }); + + // Teste para lista vazia + test("Calcular horas de projeto - Lista vazia", () => { + const listaDeFuncionalidades = []; + const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); + const esperado = 0; + expect(esperado).toBe(retornado); + }); + + // Teste para verificar funcionalidade não existente + test("Calcular horas de projeto - Funcionalidade inexistente", () => { + const listaDeFuncionalidades = ['funcionalidade_inexistente']; + const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); + const esperado = NaN; // O valor retornado é undefined, mas na soma ele se torna NaN + expect(retornado).toBeNaN(); + }); + + // Teste para funcionalidades repetidas + test("Calcular horas de projeto - Funcionalidades repetidas", () => { + const listaDeFuncionalidades = ['setup', 'setup', 'setup']; + const retornado = calcularHorasDeProjeto(listaDeFuncionalidades); + const esperado = 24; // 8 + 8 + 8 + expect(esperado).toBe(retornado); + }); }); \ No newline at end of file