From 0442d7db671e2ed18c641f5f67b82e7f9e2b8c27 Mon Sep 17 00:00:00 2001 From: AvaCorrea Date: Sat, 8 Jun 2024 16:33:50 -0300 Subject: [PATCH] =?UTF-8?q?Desafio=20de=20testes=20unitarios=20Feito=20em?= =?UTF-8?q?=2006/08/2024=20Na=20oficina=20de=20sele=C3=A7=C3=A3o=20Ava=20P?= =?UTF-8?q?immel=20Correa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dominio/calculadora/Projeto/pacote.js | 2 +- .../ana-luiza-sampaio/valorHora.test.js | 0 .../ava-pimmel-correa/horasPorProjeto.test.js | 26 ++++++++ .../ava-pimmel-correa/pacote.test.js | 36 ++++++++++ .../ava-pimmel-correa/valorHora.test.js | 14 ++++ .../ava-pimmel-correa/valorProjeto.test.js | 53 +++++++++++++++ .../valorProjetoComMock.test.js | 65 +++++++++++++++++++ .../exemplo-nome-sobrenome/valorHora.test.js | 0 8 files changed, 195 insertions(+), 1 deletion(-) delete mode 100644 src/entregasDesafio/ana-luiza-sampaio/valorHora.test.js create mode 100644 src/entregasDesafio/ava-pimmel-correa/horasPorProjeto.test.js create mode 100644 src/entregasDesafio/ava-pimmel-correa/pacote.test.js create mode 100644 src/entregasDesafio/ava-pimmel-correa/valorHora.test.js create mode 100644 src/entregasDesafio/ava-pimmel-correa/valorProjeto.test.js create mode 100644 src/entregasDesafio/ava-pimmel-correa/valorProjetoComMock.test.js delete mode 100644 src/entregasDesafio/exemplo-nome-sobrenome/valorHora.test.js diff --git a/src/dominio/calculadora/Projeto/pacote.js b/src/dominio/calculadora/Projeto/pacote.js index 615b3c4..87bff15 100644 --- a/src/dominio/calculadora/Projeto/pacote.js +++ b/src/dominio/calculadora/Projeto/pacote.js @@ -1,7 +1,7 @@ const { MAX_HORAS_POR_PACOTE } = require('../constantes/constantes'); const calcularPacote = (totalDeHorasPorProjeto) => Object.entries(MAX_HORAS_POR_PACOTE) - .find(([key, value]) => value > totalDeHorasPorProjeto + .find(([key, value]) => value >= totalDeHorasPorProjeto )[0]; exports.calcularPacote = calcularPacote; \ No newline at end of file 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/ava-pimmel-correa/horasPorProjeto.test.js b/src/entregasDesafio/ava-pimmel-correa/horasPorProjeto.test.js new file mode 100644 index 0000000..9333b04 --- /dev/null +++ b/src/entregasDesafio/ava-pimmel-correa/horasPorProjeto.test.js @@ -0,0 +1,26 @@ +const horasPorProjeto = require('../../dominio/calculadora/Projeto/horasPorProjeto'); + +var testeGenerico = (arrayFuncionalidades, valorTotalEsperado, stringTeste) => { + test(stringTeste, () => { + const calculo = horasPorProjeto.calcularHorasDeProjeto(arrayFuncionalidades); + expect(calculo).toBe(valorTotalEsperado); + }); +}; + +describe( 'Teste do calculo de horas em um projeto com X funcionalidades', () => { + testeGenerico( + arrayFuncionalidades = ['construcao_1_pagina'], + valorTotalEsperado = 8, + 'Projeto com 1 pagina' + ); + testeGenerico( + arrayFuncionalidades = ['construcao_1_pagina', 'construcao_1_pagina'], + valorTotalEsperado = 16, + 'Projeto com 2 paginas' + ); + testeGenerico( + arrayFuncionalidades = ['construcao_1_pagina', 'formulario', 'ssr'], + valorTotalEsperado = 32, + 'Projeto com 1 pagina, formulario e ssr' + ); +}); diff --git a/src/entregasDesafio/ava-pimmel-correa/pacote.test.js b/src/entregasDesafio/ava-pimmel-correa/pacote.test.js new file mode 100644 index 0000000..3d291f0 --- /dev/null +++ b/src/entregasDesafio/ava-pimmel-correa/pacote.test.js @@ -0,0 +1,36 @@ +const pacote = require('../../dominio/calculadora/Projeto/pacote'); + +var testeGenerico = (quantidadeHoras, tipoPacoteEsperado, stringTeste) => { + test(stringTeste, () => { + const calculo = pacote.calcularPacote(quantidadeHoras); + expect(calculo).toBe(tipoPacoteEsperado); + }); +}; + +describe("Calcula pacote", () => { + testeGenerico( + 23, + 'pacote_basico', + 'Calcular pacote básico quando 23 horas' + ); + testeGenerico( + 53, + 'pacote_intermediario', + 'Calcular pacote intermediário quando 53 horas' + ); + testeGenerico( + 199, + 'pacote_premium', + 'Calcular pacote premium quando 199 horas' + ); + testeGenerico( + 100, + 'pacote_intermediario', + 'Calcular pacote intermediario quando 100 horas' + ); + testeGenerico( + 50, + 'pacote_basico', + 'Calcular pacote basico quando 50 horas' + ); +}) diff --git a/src/entregasDesafio/ava-pimmel-correa/valorHora.test.js b/src/entregasDesafio/ava-pimmel-correa/valorHora.test.js new file mode 100644 index 0000000..7538166 --- /dev/null +++ b/src/entregasDesafio/ava-pimmel-correa/valorHora.test.js @@ -0,0 +1,14 @@ +const valorHora = require('../../dominio/calculadora/Hora/valorHora'); + +var testeGenerico = (valHoraEsperado, valorSalario, stringTeste) => { + test(stringTeste, () => { + const calculo = valorHora.calcularValorPorHora(valorSalario); + expect(calculo).toBe(valHoraEsperado); + }); +}; + +describe( 'Teste do calculo valor da hora', () => { + testeGenerico(18, 3000, 'Teste para salario 3000'); + testeGenerico(23, 4000, 'Teste para salario 4000'); + testeGenerico(86, 15000, 'Teste para salario 3000'); +}); diff --git a/src/entregasDesafio/ava-pimmel-correa/valorProjeto.test.js b/src/entregasDesafio/ava-pimmel-correa/valorProjeto.test.js new file mode 100644 index 0000000..0d9cf11 --- /dev/null +++ b/src/entregasDesafio/ava-pimmel-correa/valorProjeto.test.js @@ -0,0 +1,53 @@ +const valorProjeto = require('../../dominio/calculadora/Projeto/valorProjeto'); + +var testeGenerico = (valorHora, funcionalidades, valorEsperado, stringTeste) => { + test(stringTeste, () => { + const calculo = valorProjeto.calcularValorTotalProjeto(funcionalidades, valorHora) + expect(calculo).toBe(valorEsperado); + }); +}; + +describe('Pacote basico', () => { + testeGenerico( + 30, + ['formulario', 'responsividade'], + 1056, + 'Calcular valor total do projeto quando 32 horas e 30 reais/hora' + ); + testeGenerico( + 30, + ['formulario', 'construcao_1_pagina'], + 792, + 'Calcular valor total do projeto quando 24 horas e 30 reais/hora' + ); +}); + +describe('Pacote intermediario', () => { + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp'], + 2150, + 'Calcular valor total do projeto quando 64 horas e 30 reais/hora' + ); + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp', 'setup'], + 2419, + 'Calcular valor total do projeto quando 72 horas e 30 reais/hora' + ); +}); + +describe('Pacote premium', () => { + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp', 'setup', 'formulario', 'formulario', 'ssr'], + 3864, + 'Calcular valor total do projeto quando 112 horas e 30 reais/hora' + ); + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp', 'setup', 'formulario', 'formulario'], + 3588, + 'Calcular valor total do projeto quando 104 horas e 30 reais/hora' + ); +}); \ No newline at end of file diff --git a/src/entregasDesafio/ava-pimmel-correa/valorProjetoComMock.test.js b/src/entregasDesafio/ava-pimmel-correa/valorProjetoComMock.test.js new file mode 100644 index 0000000..f91f38c --- /dev/null +++ b/src/entregasDesafio/ava-pimmel-correa/valorProjetoComMock.test.js @@ -0,0 +1,65 @@ +const valorProjeto = require('../../dominio/calculadora/Projeto/valorProjeto'); +const pacote = require('../../dominio/calculadora/Projeto/pacote') + +jest.mock('../../dominio/calculadora/Projeto/pacote') + +var testeGenerico = (valorHora, funcionalidades, valorEsperado, stringTeste) => { + test(stringTeste, () => { + const calculo = valorProjeto.calcularValorTotalProjeto(funcionalidades, valorHora) + expect(calculo).toBe(valorEsperado); + }); +}; + +describe('Pacote basico', () => { + beforeEach( () => { + pacote.calcularPacote.mockReturnValue('pacote_basico') + }); + testeGenerico( + 30, + ['formulario', 'responsividade'], + 1056, + 'Calcular valor total do projeto quando 32 horas e 30 reais/hora' + ); + testeGenerico( + 30, + ['formulario', 'construcao_1_pagina'], + 792, + 'Calcular valor total do projeto quando 24 horas e 30 reais/hora' + ); +}); + +describe('Pacote intermediario', () => { + beforeEach( () => { + pacote.calcularPacote.mockReturnValue('pacote_intermediario') + }); + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp'], + 2150, + 'Calcular valor total do projeto quando 64 horas e 30 reais/hora' + ); + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp', 'setup'], + 2419, + 'Calcular valor total do projeto quando 72 horas e 30 reais/hora' + ); +}); + +describe('Pacote premium', () => { + beforeEach( () => { + pacote.calcularPacote.mockReturnValue('pacote_premium') + }); + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp', 'setup', 'formulario', 'formulario', 'ssr'], + 3864, + 'Calcular valor total do projeto quando 112 horas e 30 reais/hora' + ); + testeGenerico( + 30, + ['formulario', 'responsividade', 'otimizacao_seo', 'integracao_mailchimp', 'setup', 'formulario', 'formulario'], + 3588, + 'Calcular valor total do projeto quando 104 horas e 30 reais/hora' + ); +}); \ 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