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
2 changes: 1 addition & 1 deletion src/dominio/calculadora/Projeto/pacote.js
Original file line number Diff line number Diff line change
@@ -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;
Empty file.
26 changes: 26 additions & 0 deletions src/entregasDesafio/ava-pimmel-correa/horasPorProjeto.test.js
Original file line number Diff line number Diff line change
@@ -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'
);
});
36 changes: 36 additions & 0 deletions src/entregasDesafio/ava-pimmel-correa/pacote.test.js
Original file line number Diff line number Diff line change
@@ -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'
);
})
14 changes: 14 additions & 0 deletions src/entregasDesafio/ava-pimmel-correa/valorHora.test.js
Original file line number Diff line number Diff line change
@@ -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');
});
53 changes: 53 additions & 0 deletions src/entregasDesafio/ava-pimmel-correa/valorProjeto.test.js
Original file line number Diff line number Diff line change
@@ -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'
);
});
65 changes: 65 additions & 0 deletions src/entregasDesafio/ava-pimmel-correa/valorProjetoComMock.test.js
Original file line number Diff line number Diff line change
@@ -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'
);
});
Empty file.