diff --git a/package.json b/package.json index 1c34a0ac..7a26aa1f 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/dominio/calculadora/constantes/constantes.js b/src/dominio/calculadora/constantes/constantes.js index 2bb57f03..d18835c1 100644 --- a/src/dominio/calculadora/constantes/constantes.js +++ b/src/dominio/calculadora/constantes/constantes.js @@ -9,8 +9,8 @@ const MAX_HORAS_POR_PACOTE = { const TAXAS_CONTRATUAIS_POR_PACOTE = { pacote_basico: 1.1, // 10% - pacote_intermediario: 1.2, // 12% - pacote_premium: 1.5 // 15% + pacote_intermediario: 1.12, // 12% + pacote_premium: 1.15 // 15% } const HORAS_POR_FUNCIONALIDADE = { diff --git a/src/entregasDesafio/ciane_pereira/horasPorProjeto.js b/src/entregasDesafio/ciane_pereira/horasPorProjeto.js new file mode 100644 index 00000000..ff19c80a --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/horasPorProjeto.js @@ -0,0 +1,9 @@ +const { HORAS_POR_FUNCIONALIDADE } = require('../constantes/constantes'); + +const calcularHorasDeProjeto = (listaDeFuncionalidades) => ( + listaDeFuncionalidades + .map(func => HORAS_POR_FUNCIONALIDADE[func]) + .reduce((sum, currentValue) => sum + currentValue, 0) +); + +exports.calcularHorasDeProjeto = calcularHorasDeProjeto; diff --git a/src/entregasDesafio/ciane_pereira/horasPorProjeto.test.js b/src/entregasDesafio/ciane_pereira/horasPorProjeto.test.js new file mode 100644 index 00000000..a7f7b738 --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/horasPorProjeto.test.js @@ -0,0 +1,33 @@ +const { calcularHorasDeProjeto } = require('../../dominio/calculadora/Projeto/horasPorProjeto') + +describe("Calcular Horas de projeto", () => { + test("Se a lista contém 3 funcionalidades terá 40 horas", ()=> { + const listaDeFuncionalidades = ["setup", "formulario", "responsividade"] + + expect(calcularHorasDeProjeto(listaDeFuncionalidades)).toBe(40) + }) + + test("Calcular horas quando não existe a funcionalidade", () => { + const listaDeFuncionalidadesInexistente = ["testes"] + + expect(calcularHorasDeProjeto(listaDeFuncionalidadesInexistente)).toBeNaN() + + }) + + test("Se a lista contém todas as funcionalidades terá 104 horas",() =>{ + const listaTodas = [ + 'setup', + 'formulario', + 'responsividade', + 'otimizacao_seo', + 'construcao_1_pagina', + 'integracao_mailchimp', + 'ssr', + 'integracao_api_propria' + ] + expect(calcularHorasDeProjeto(listaTodas)).toBe(104) + + }) + + +}) \ No newline at end of file diff --git a/src/entregasDesafio/ciane_pereira/pacote.js b/src/entregasDesafio/ciane_pereira/pacote.js new file mode 100644 index 00000000..7ae6cf8b --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/pacote.js @@ -0,0 +1,7 @@ +const { MAX_HORAS_POR_PACOTE } = require('../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/ciane_pereira/pacote.test.js b/src/entregasDesafio/ciane_pereira/pacote.test.js new file mode 100644 index 00000000..b8e8376a --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/pacote.test.js @@ -0,0 +1,23 @@ +const { calcularPacote } = require('../../dominio/calculadora/Projeto/pacote') + +describe("Calcular Pacote", () => { + test("Projeto de 104 horas deve retornar pacote Premium", () => { + const horasDeProjeto = 104 + + expect(calcularPacote(horasDeProjeto)).toBe('pacote_premium') + }) + + test("Projeto maior que 51 horas e menor que 100 horas deve retornar pacote intermediário", () => { + for (let horasDeProjeto = 51; horasDeProjeto < 100; horasDeProjeto++) { + + expect(calcularPacote(horasDeProjeto)).toBe('pacote_intermediario') + } + }) + + test("Projeto de 50 horas deve retornar pacote básico", () => { + const horasProjeto = 50 + }) + + expect(calcularPacote(horasProjeto)).toBe('pacote_basico') + }) + diff --git a/src/entregasDesafio/ciane_pereira/sum.js b/src/entregasDesafio/ciane_pereira/sum.js new file mode 100644 index 00000000..1d51d697 --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/sum.js @@ -0,0 +1,4 @@ +function sum(a,b) { + return a + b +} +module.exports = sum; \ No newline at end of file diff --git a/src/entregasDesafio/ciane_pereira/sum.test.js b/src/entregasDesafio/ciane_pereira/sum.test.js new file mode 100644 index 00000000..80dfd88e --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/sum.test.js @@ -0,0 +1,10 @@ + +const sum = require('./sum') + +test("adicionando 1+2 e tem que retornar 3", () => { + expect(sum(1, 2)).not.toBe(0) +}) + +test("1+2 = 3", () => { + expect(sum(1,2)).toBe(3) +}) \ No newline at end of file diff --git a/src/entregasDesafio/ciane_pereira/valorHora.test.js b/src/entregasDesafio/ciane_pereira/valorHora.test.js new file mode 100644 index 00000000..1c279576 --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/valorHora.test.js @@ -0,0 +1,13 @@ +const { calcularValorPorHora } = require("../../dominio/calculadora/Hora/valorHora") + +describe("Calcular Valor Por Hora", () => { + test("Salário mínimo de 1300 reais", () => { + const valorPorHoraCalculado = calcularValorPorHora(1300) + const valorPorHoraEsperado = 8 + const zero = 0 + + expect(valorPorHoraCalculado).toBe(valorPorHoraEsperado) + expect(valorPorHoraCalculado).toBeGreaterThan(zero) + }) + +}) \ No newline at end of file diff --git a/src/entregasDesafio/ciane_pereira/valorProjeto.test.js b/src/entregasDesafio/ciane_pereira/valorProjeto.test.js new file mode 100644 index 00000000..2caa4982 --- /dev/null +++ b/src/entregasDesafio/ciane_pereira/valorProjeto.test.js @@ -0,0 +1,26 @@ +const { calcularValorTotalProjeto } = require('../../dominio/calculadora/Projeto/valorProjeto') + +describe("Calcular valor total projeto", () => { + + test("Projeto com 104 horas receber taxa contratual de 15% para valor do pacote Premium", () => { + const listaDeFuncionalidades = ['setup','formulario', 'responsividade','otimizacao_seo', 'construcao_1_pagina','integracao_mailchimp', 'ssr', 'integracao_api_propria'] + const valorHora = 8 + + expect(calcularValorTotalProjeto(listaDeFuncionalidades, valorHora)).toBe(957) + }) + + test("Projeto com 64 horas receber taxa contratual de 12% para valor do pacote Intermediário", () => { + const listaDeFuncionalidades = ['setup','formulario', 'responsividade','otimizacao_seo', 'construcao_1_pagina','integracao_mailchimp'] + const valorHora = 8 + + + }) + expect(calcularValorTotalProjeto(listaDeFuncionalidades, valorHora)).toBe(573) + + test("Projeto com 24 horas receber taxa contratual de 10% para valor do pacote Básico", () => { + const listaDeFuncionalidades = ['setup','formulario'] + const valorHora = 8 + + expect(calcularValorTotalProjeto(listaDeFuncionalidades, valorHora)).toBe(211) + }) +}) \ 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 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