diff --git a/package.json b/package.json index f454b90..9714535 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "keywords": [], "author": "", "license": "ISC", - "dependencies": { - "jest": "^28.1.2" + "devDependencies": { + "jest": "^29.7.0" } + } 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; 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..6209c84 --- /dev/null +++ b/src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js @@ -0,0 +1,51 @@ +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); + }); + + // 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 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..cdf5db4 --- /dev/null +++ b/src/entregasDesafio/eliza-pimentel/valorProjeto.test.js @@ -0,0 +1,55 @@ +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); + }); +}); + + 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); + }); + }); + + + 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