Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"scripts": {
"test": "jest"
},
"devDependencies": {
"jest": "^29.5.0"
}
}
3 changes: 2 additions & 1 deletion src/dominio/calculadora/Projeto/pacote.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const { MAX_HORAS_POR_PACOTE } = require('../constantes/constantes');

const calcularPacote = (totalDeHorasPorProjeto) => Object.entries(MAX_HORAS_POR_PACOTE)
const calcularPacote = (totalDeHorasPorProjeto) =>
Object.entries(MAX_HORAS_POR_PACOTE)
.find(([key, value]) => value > totalDeHorasPorProjeto
)[0];

Expand Down
4 changes: 2 additions & 2 deletions src/dominio/calculadora/constantes/constantes.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const { HORAS_POR_FUNCIONALIDADE } = require("../../../dominio/calculadora/constantes/constantes");


const calcularHorasDeProjeto = (listaDeFuncionalidades) => (
listaDeFuncionalidades
.map(func => HORAS_POR_FUNCIONALIDADE[func])
.reduce((sum, currentValue) => sum + currentValue, 0)
);

exports.calcularHorasDeProjeto = calcularHorasDeProjeto;
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

const { calcularHorasDeProjeto } = require("./horasPorProjeto");


describe("Calcular Horas por Projeto", () => {

test("Uma lista contendo 3 funcionalidades tera 24 horas", () => {
const listaAlgumasFuncionalidades = [ "setup", "construcao_1_pagina", "ssr"]
expect(calcularHorasDeProjeto(listaAlgumasFuncionalidades)).toBe(24)

})

test("Calcular horas quando não existe funcionalidade", () => {
const listaInexistente = [ "teste "]
expect(calcularHorasDeProjeto(listaInexistente)).toBeNaN()
})

test("Verificar se possui todas as funcionalidades", () => {
const listaTodasFuncionalidades = ["setup","formulario","responsividade",
"otimizacao_seo", "construcao_1_pagina","integracao_mailchimp",
"ssr","integracao_api_propria"]
expect(calcularHorasDeProjeto(listaTodasFuncionalidades)).toBe(104)
})


})
8 changes: 8 additions & 0 deletions src/entregasDesafio/daniela-botelho/Pacote/pacote.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
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;
38 changes: 38 additions & 0 deletions src/entregasDesafio/daniela-botelho/Pacote/pacote.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const { calcularPacote } = require("./pacote")

describe("Calcular Pacote", () => {

test("Projeto de 200h retorna pacote_premium", () => {
const horasDeProjeto = 200
expect(calcularPacote(horasDeProjeto)).toBe("pacote_premium"
)
})

test("Projeto de 199h retorna pacote_premium", () => {
const horasDeProjeto = 199
expect(calcularPacote(horasDeProjeto)).toBe("pacote_premium")
})

test("Projeto de 100h retorna pacote_intermediario", () => {
const horasDeProjeto = 100
expect(calcularPacote(horasDeProjeto)).toBe("pacote_intermediario")
})

test("Projeto de 98h retorna pacote_intermediario", () => {
const horasDeProjeto = 98
expect(calcularPacote(horasDeProjeto)).toBe("pacote_intermediario")
})


test("Projeto de 50h retorna pacote_basico", () => {
const horasDeProjeto = 50
expect(calcularPacote(horasDeProjeto)).toBe("pacote_basico")
})

test("Projeto de 30h retorna pacote_basico", () => {
const horasDeProjeto = 30
expect(calcularPacote(horasDeProjeto)).toBe("pacote_basico")
})


})
22 changes: 22 additions & 0 deletions src/entregasDesafio/daniela-botelho/ValorHora/valorHora.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Testes aqui
const {calcularValorPorHora} = require("../../../dominio/calculadora/Hora/valorHora")

describe("Calcular valor por Hora", () => {

test("Salario é 2000,00 e o valor da hora é 12,00", () => {
expect(calcularValorPorHora(2000)).toBe(12)
})

test("Salario é 1500,00, hora paga é menor que 10" , () => {
expect(calcularValorPorHora(1500)).toBeLessThan(10);
})

test("Salario é 2000,00, hora paga maior igual a 10" , () => {
expect(calcularValorPorHora(2000)).toBeGreaterThanOrEqual(10);
})

test("Valor informado não é string", () => {
expect(typeof calcularValorPorHora(1500)).not.toBe('string');
})

})
20 changes: 20 additions & 0 deletions src/entregasDesafio/daniela-botelho/ValorProjeto/valorProjeto.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

const { TAXAS_CONTRATUAIS_POR_PACOTE } = require("../../../dominio/calculadora/constantes/constantes");
const { calcularHorasDeProjeto } = require("../HorasPorProjeto/horasPorProjeto");
const { calcularPacote } = require("../Pacote/pacote");

const calcularValorBaseProjeto = (totalDeHorasPorProjeto, valorHora) => {
return totalDeHorasPorProjeto * valorHora;
};

const calcularValorTotalProjeto = (funcionalidades, valorHora) => {
const totalDeHorasPorProjeto = calcularHorasDeProjeto(funcionalidades);

const pacote = calcularPacote(totalDeHorasPorProjeto);

const valorBase = calcularValorBaseProjeto(totalDeHorasPorProjeto, valorHora);

return Math.round(valorBase * TAXAS_CONTRATUAIS_POR_PACOTE[pacote]);
}

exports.calcularValorTotalProjeto = calcularValorTotalProjeto;
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const { calcularValorPorHora } = require("../../../dominio/calculadora/Hora/valorHora");
const { calcularValorTotalProjeto } = require("./valorProjeto");


describe("Valor do Projeto", () => {
const listaTodasFuncionalidades = ["setup","formulario","responsividade",
"otimizacao_seo", "construcao_1_pagina","integracao_mailchimp", "ssr","integracao_api_propria"]

const listaIntermediaria = ["setup","formulario","responsividade", "otimizacao_seo", "construcao_1_pagina"]

const listaBasica = [ "setup", "ssr", "construcao_1_pagina"]

const listaVazia = [ ]

test("Valor do projeto com todas as funcionalidades e valor da hora 8,00 é maior que 900", () => {
expect(calcularValorTotalProjeto(listaTodasFuncionalidades,8)).toBeGreaterThan(900);
})

test("Valor do projeto todas as funcinalidades e salario de 2200 é 1555", () => {
expect(calcularValorTotalProjeto(listaTodasFuncionalidades,calcularValorPorHora(2200))).toBe(1555);
})

test("Valor do projeto com 3 funcionalidades de 8 horas cada e valor da hora 10,00, é 264,00" , () => {
expect(calcularValorTotalProjeto(listaBasica,10)).toBe(264);
})

test("Valor do projeto com pacote intemediario e salario 1500" , () => {
expect(calcularValorTotalProjeto(listaIntermediaria,calcularValorPorHora(1500))).toBe(645);
})

test("Valor do projeto sem funcionalidades e 8 horas seja 0", () => {
expect(calcularValorTotalProjeto(listaVazia,8)).toBe(0);
})

})
5 changes: 5 additions & 0 deletions src/entregasDesafio/daniela-botelho/sum.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
function sum(a,b){
return a + b ;
}

module.exports = sum
14 changes: 14 additions & 0 deletions src/entregasDesafio/daniela-botelho/sum.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const sum = require('./sum');

describe('Testando a função SUM', () => {

test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
})

test('adds 2 + 3 not to equal 4', () => {
expect(sum(2, 1)).not.toBe(4);
})

})

Empty file.
1 change: 0 additions & 1 deletion src/entregasDesafio/milena-martins/valorHora.test.js

This file was deleted.