From 748dab868fae7ad9992ee5bbd268ca9521b043e2 Mon Sep 17 00:00:00 2001 From: Allana Mendes Date: Sat, 20 May 2023 14:17:58 -0300 Subject: [PATCH 1/2] test: created first tests --- package.json | 6 +++++- src/entregasDesafio/allana-evellyn-mendes/sum.js | 5 +++++ .../allana-evellyn-mendes/sum.test.js | 11 +++++++++++ .../allana-evellyn-mendes/valorHora.test.js | 12 ++++++++++++ .../exemplo-nome-sobrenome/valorHora.test.js | 0 src/entregasDesafio/milena-martins/valorHora.test.js | 1 - 6 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/entregasDesafio/allana-evellyn-mendes/sum.js create mode 100644 src/entregasDesafio/allana-evellyn-mendes/sum.test.js create mode 100644 src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js delete mode 100644 src/entregasDesafio/exemplo-nome-sobrenome/valorHora.test.js delete mode 100644 src/entregasDesafio/milena-martins/valorHora.test.js diff --git a/package.json b/package.json index 1c34a0ac..15a492ec 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,10 @@ "keywords": [], "author": "", "license": "ISC", - "dependencies": { + "devDependencies": { + "jest": "^29.5.0" + }, + "scripts": { + "test": "jest" } } diff --git a/src/entregasDesafio/allana-evellyn-mendes/sum.js b/src/entregasDesafio/allana-evellyn-mendes/sum.js new file mode 100644 index 00000000..afa261cd --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/sum.js @@ -0,0 +1,5 @@ +function sum(a, b) { + return a + b; +} + +module.exports = sum; diff --git a/src/entregasDesafio/allana-evellyn-mendes/sum.test.js b/src/entregasDesafio/allana-evellyn-mendes/sum.test.js new file mode 100644 index 00000000..398bb541 --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/sum.test.js @@ -0,0 +1,11 @@ +const sum = require("./sum"); + +describe("Testando a função sum", () => { + test("não retorna 0 quando soma 1 e 2", () => { + expect(sum(1, 2)).not.toBe(0); + }); + + test("1 + 2 = 3", () => { + expect(sum(1, 2)).toBe(3); + }); +}); diff --git a/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js b/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js new file mode 100644 index 00000000..ef19fe45 --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js @@ -0,0 +1,12 @@ +const { + calcularValorPorHora, +} = require("../../dominio/calculadora/Hora/valorHora"); + +describe("Calcular valor por hora ", () => { + test("Salário mínimo de 1300 reais", () => { + const valorRealPorHora = calcularValorPorHora(1300); + const valorPorHoraEsperado = 8; + + expect(valorRealPorHora).toBe(valorPorHoraEsperado); + }); +}); 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 e69de29b..00000000 diff --git a/src/entregasDesafio/milena-martins/valorHora.test.js b/src/entregasDesafio/milena-martins/valorHora.test.js deleted file mode 100644 index 43d00b1b..00000000 --- a/src/entregasDesafio/milena-martins/valorHora.test.js +++ /dev/null @@ -1 +0,0 @@ -// Testes aqui \ No newline at end of file From cc1dafde6f261911be4a03008ae4e55fd38e1bf4 Mon Sep 17 00:00:00 2001 From: allanina Date: Sat, 20 May 2023 15:20:58 -0300 Subject: [PATCH 2/2] test: created tests for the functions --- .../horasPorProjeto.test.js | 18 ++++++++ .../allana-evellyn-mendes/pacote.js | 10 +++++ .../allana-evellyn-mendes/pacote.test.js | 42 +++++++++++++++++++ .../allana-evellyn-mendes/valorHora.test.js | 19 ++++++--- .../valorProjeto.test.js | 39 +++++++++++++++++ 5 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 src/entregasDesafio/allana-evellyn-mendes/horasPorProjeto.test.js create mode 100644 src/entregasDesafio/allana-evellyn-mendes/pacote.js create mode 100644 src/entregasDesafio/allana-evellyn-mendes/pacote.test.js create mode 100644 src/entregasDesafio/allana-evellyn-mendes/valorProjeto.test.js diff --git a/src/entregasDesafio/allana-evellyn-mendes/horasPorProjeto.test.js b/src/entregasDesafio/allana-evellyn-mendes/horasPorProjeto.test.js new file mode 100644 index 00000000..b8cc17a4 --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/horasPorProjeto.test.js @@ -0,0 +1,18 @@ +const { + calcularHorasDeProjeto, +} = require("../../dominio/calculadora/Projeto/horasPorProjeto"); + +describe("Calcula as horas necessárias para finalizar um projeto", () => { + it("deve retornar a soma de horas necessárias de acordo com o array de funcionalidades desejadas", () => { + const funcionalidades = ["setup", "responsividade", "construcao_1_pagina"]; + + const result = calcularHorasDeProjeto(funcionalidades); + + expect(result).toEqual(32); + }); + + it("retornar NaN pra quando não existe a funcionalidade", () => { + const novaFuncionalidade = ["testes"]; + expect(calcularHorasDeProjeto(novaFuncionalidade)).toBeNaN(); + }); +}); diff --git a/src/entregasDesafio/allana-evellyn-mendes/pacote.js b/src/entregasDesafio/allana-evellyn-mendes/pacote.js new file mode 100644 index 00000000..810b777f --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/pacote.js @@ -0,0 +1,10 @@ +const { + MAX_HORAS_POR_PACOTE, +} = require("../../dominio/calculadora/constantes/constantes"); + +const calcularPacote = (totalDeHorasPorProjeto) => + Object.entries(MAX_HORAS_POR_PACOTE).find( + ([key, value]) => value >= totalDeHorasPorProjeto + )[0]; + +exports.calcularPacote = calcularPacote; diff --git a/src/entregasDesafio/allana-evellyn-mendes/pacote.test.js b/src/entregasDesafio/allana-evellyn-mendes/pacote.test.js new file mode 100644 index 00000000..4ccb6824 --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/pacote.test.js @@ -0,0 +1,42 @@ +const { calcularPacote } = require("./pacote"); + +describe("Testar pacotes de acordo com as horas totais do projeto", () => { + it("deve testar o pacote básico", () => { + const horasProjeto = 50; + const result = calcularPacote(horasProjeto); + + expect(result).toEqual("pacote_basico"); + }); + + it("deve testar o pacote intermediário", () => { + const horasProjeto = 100; + const result = calcularPacote(horasProjeto); + + expect(result).toEqual("pacote_intermediario"); + }); + + it("deve testar o pacote premium", () => { + const horasProjeto = 200; + const result = calcularPacote(horasProjeto); + + expect(result).toEqual("pacote_premium"); + }); +}); + +describe("Testar a troca de pacotes quando ultrapassa o valor máximo por pacote", () => { + it("deve testar a troca de pacote básico para intermediário", () => { + const horasProjeto = 50.1; + const result = calcularPacote(horasProjeto); + + expect(result).not.toEqual("pacote_basico"); + expect(result).toEqual("pacote_intermediario"); + }); + + it("deve testar o pacote intermediário", () => { + const horasProjeto = 100.1; + const result = calcularPacote(horasProjeto); + + expect(result).not.toEqual("pacote_intermediario"); + expect(result).toEqual("pacote_premium"); + }); +}); diff --git a/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js b/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js index ef19fe45..d9e7fb36 100644 --- a/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js +++ b/src/entregasDesafio/allana-evellyn-mendes/valorHora.test.js @@ -2,11 +2,20 @@ const { calcularValorPorHora, } = require("../../dominio/calculadora/Hora/valorHora"); -describe("Calcular valor por hora ", () => { - test("Salário mínimo de 1300 reais", () => { - const valorRealPorHora = calcularValorPorHora(1300); - const valorPorHoraEsperado = 8; +describe("Valor por hora", () => { + it("deve retornar valor arredondado corretamente para o valor mais alto dado o valor recebido no mês", () => { + const valorPorMes = 5000; - expect(valorRealPorHora).toBe(valorPorHoraEsperado); + const result = calcularValorPorHora(valorPorMes); + + expect(result).toEqual(29); + }); + + it("deve arredondar o valor final para o valor mais alto", () => { + const valorPorMes = 5000; + + const result = calcularValorPorHora(valorPorMes); + + expect(result).not.toEqual(28); }); }); diff --git a/src/entregasDesafio/allana-evellyn-mendes/valorProjeto.test.js b/src/entregasDesafio/allana-evellyn-mendes/valorProjeto.test.js new file mode 100644 index 00000000..ff785a7a --- /dev/null +++ b/src/entregasDesafio/allana-evellyn-mendes/valorProjeto.test.js @@ -0,0 +1,39 @@ +const { + calcularValorTotalProjeto, +} = require("../../dominio/calculadora/Projeto/valorProjeto"); +const pacote = require("../../dominio/calculadora/Projeto/pacote"); + +jest.mock("../../dominio/calculadora/Projeto/pacote.js"); + +const funcionalidades = ["setup", "responsividade", "construcao_1_pagina"]; +const valorHora = 70; + +describe("Calcular valor total do projeto", () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it("deve retornar o valor total para um projeto básico dadas as funcionalidades", () => { + pacote.calcularPacote.mockReturnValue("pacote_basico"); + + const result = calcularValorTotalProjeto(funcionalidades, valorHora); + + expect(result).toEqual(2464); + }); + + it("deve retornar o valor total para um projeto intermediário dadas as funcionalidades", () => { + pacote.calcularPacote.mockReturnValue("pacote_intermediario"); + + const result = calcularValorTotalProjeto(funcionalidades, valorHora); + + expect(result).toEqual(2688); + }); + + it("deve retornar o valor total para um projeto premium dadas as funcionalidades", () => { + pacote.calcularPacote.mockReturnValue("pacote_premium"); + + const result = calcularValorTotalProjeto(funcionalidades, valorHora); + + expect(result).toEqual(3360); + }); +});