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
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
}
"devDependencies": {
"jest": "^29.5.0"
},
"scripts":{
"test": "jest"
}
}
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
9 changes: 9 additions & 0 deletions src/entregasDesafio/ciane_pereira/horasPorProjeto.js
Original file line number Diff line number Diff line change
@@ -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;
33 changes: 33 additions & 0 deletions src/entregasDesafio/ciane_pereira/horasPorProjeto.test.js
Original file line number Diff line number Diff line change
@@ -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)

})


})
7 changes: 7 additions & 0 deletions src/entregasDesafio/ciane_pereira/pacote.js
Original file line number Diff line number Diff line change
@@ -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;
23 changes: 23 additions & 0 deletions src/entregasDesafio/ciane_pereira/pacote.test.js
Original file line number Diff line number Diff line change
@@ -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')
})

4 changes: 4 additions & 0 deletions src/entregasDesafio/ciane_pereira/sum.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
function sum(a,b) {
return a + b
}
module.exports = sum;
10 changes: 10 additions & 0 deletions src/entregasDesafio/ciane_pereira/sum.test.js
Original file line number Diff line number Diff line change
@@ -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)
})
13 changes: 13 additions & 0 deletions src/entregasDesafio/ciane_pereira/valorHora.test.js
Original file line number Diff line number Diff line change
@@ -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)
})

})
26 changes: 26 additions & 0 deletions src/entregasDesafio/ciane_pereira/valorProjeto.test.js
Original file line number Diff line number Diff line change
@@ -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)
})
})
Empty file.
1 change: 0 additions & 1 deletion src/entregasDesafio/milena-martins/valorHora.test.js

This file was deleted.