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
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"jest": "^28.1.2"
"devDependencies": {
"jest": "^29.7.0"
}

}
5 changes: 5 additions & 0 deletions src/dominio/calculadora/Hora/valorHora.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ const {
} = require('../constantes/constantes')

const calcularValorPorHora = (rendaMensal) => {
//converte valor para number
const renda = Number(rendaMensal);
if (isNaN(renda)) {
throw new TypeError('A renda mensal deve ser um número.');
}
const horasTrabalhadasPorMes = (HORAS_POR_DIA * DIAS_UTEIS_NO_MES);
const valorPorHora = rendaMensal / horasTrabalhadasPorMes;

Expand Down
Empty file.
19 changes: 19 additions & 0 deletions src/entregasDesafio/eliza-pimentel/calcularPacote.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const {calcularPacote} = require("../../dominio/calculadora/Projeto/pacote");

describe("Calcula pacote", () => {
test("Calcular pacote básico quando 23 horas", () => {
const retornado = calcularPacote(23);
const esperado = 'pacote_basico';
expect(esperado).toBe(retornado)
});
test("Calcular pacote intermediário quando 53 horas", () => {
const retornado = calcularPacote(53);
const esperado = 'pacote_intermediario';
expect(esperado).toBe(retornado)
});
test("Calcular pacote premium quando 199 horas", () => {
const retornado = calcularPacote(199);
const esperado = 'pacote_premium';
expect(esperado).toBe(retornado)
});
})
51 changes: 51 additions & 0 deletions src/entregasDesafio/eliza-pimentel/horasPorProjeto.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
const { calcularHorasDeProjeto } = require("../../dominio/calculadora/Projeto/horasPorProjeto");

describe("Calcular horas de projeto", () => {
test("Calcular horas de projeto - 1 Funcionalidade", () => {
const listaDeFuncionalidades = ['formulario'];
const retornado = calcularHorasDeProjeto(listaDeFuncionalidades);
const esperado = 16;
expect(esperado).toBe(retornado);
});
test("Calcular horas de projeto - 2 Funcionalidades", () => {
const listaDeFuncionalidades = ['formulario', 'formulario'];
const retornado = calcularHorasDeProjeto(listaDeFuncionalidades);
const esperado = 32;
expect(esperado).toBe(retornado);
});
test("calcular horas de projeto - 3 Páginas", () => {
const retorno = calcularHorasDeProjeto(['construcao_1_pagina', 'construcao_1_pagina', 'construcao_1_pagina']);
const esperado = 24;
expect(esperado).toBe(retorno)
});
test("Calcular horas de projeto - 4 Funcionalidades diferentes", () => {
const listaDeFuncionalidades = ['formulario', 'responsividade', 'otimizacao_seo', 'construcao_1_pagina'];
const retornado = calcularHorasDeProjeto(listaDeFuncionalidades);
const esperado = 56;
expect(esperado).toBe(retornado);
});

// Teste para lista vazia
test("Calcular horas de projeto - Lista vazia", () => {
const listaDeFuncionalidades = [];
const retornado = calcularHorasDeProjeto(listaDeFuncionalidades);
const esperado = 0;
expect(esperado).toBe(retornado);
});

// Teste para verificar funcionalidade não existente
test("Calcular horas de projeto - Funcionalidade inexistente", () => {
const listaDeFuncionalidades = ['funcionalidade_inexistente'];
const retornado = calcularHorasDeProjeto(listaDeFuncionalidades);
const esperado = NaN; // O valor retornado é undefined, mas na soma ele se torna NaN
expect(retornado).toBeNaN();
});

// Teste para funcionalidades repetidas
test("Calcular horas de projeto - Funcionalidades repetidas", () => {
const listaDeFuncionalidades = ['setup', 'setup', 'setup'];
const retornado = calcularHorasDeProjeto(listaDeFuncionalidades);
const esperado = 24; // 8 + 8 + 8
expect(esperado).toBe(retornado);
});
});
54 changes: 54 additions & 0 deletions src/entregasDesafio/eliza-pimentel/valorHora.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
const { calcularValorPorHora } = require('../../dominio/calculadora/Hora/valorHora');

describe('Calcular o valor da hora', () => {
test("Calcular o valor da hora - Renda mensal de 3000", () => {
const retorno = calcularValorPorHora(3000);
const esperado = 18;
expect(esperado).toBe(retorno);
});
test("Calcular o valor da hora - Renda mensal de 4000", () => {
const retorno = calcularValorPorHora(4000);
const esperado = 23;
expect(esperado).toBe(retorno);
});
test("Calcular o valor da hora - Renda mensal de 15000", () => {
const retorno = calcularValorPorHora(15000);
const esperado = 86;
expect(esperado).toBe(retorno);
});

test("Calcular o valor da hora - Renda mensal de 2000", () => {
const retorno = calcularValorPorHora(2000);
const esperado = 12;
expect(esperado).toBe(retorno);
});

// teste para renda mensal zero
test("Calcular o valor da hora - Renda mensal de 0", () => {
const retorno = calcularValorPorHora(0);
const esperado = 0;
expect(esperado).toBe(retorno);
});

// teste para verificar arredondamento
test("Calcular o valor da hora - Renda mensal de 3333", () => {
const retorno = calcularValorPorHora(3333);
const esperado = 19;
expect(esperado).toBe(retorno);
});

// teste para verificar entradas não numéricas
test("Calcular o valor da hora - Renda mensal como string '4000'", () => {
const retorno = calcularValorPorHora('4000');
const esperado = 23;
expect(esperado).toBe(retorno);
});

test("Calcular o valor da hora - Renda mensal como string NAN 'quatrocendos mil'", () => {
expect(() => {
calcularValorPorHora('quatrocendos mil');
}).toThrow(TypeError);
});


});
55 changes: 55 additions & 0 deletions src/entregasDesafio/eliza-pimentel/valorProjeto.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
const { calcularValorTotalProjeto } = require('../../dominio/calculadora/Projeto/valorProjeto');
const pacote = require("../../dominio/calculadora/Projeto/pacote");

jest.mock("../../dominio/calculadora/Projeto/pacote");

describe('pacote basico', () => {
beforeAll(() => {
pacote.calcularPacote.mockReturnValue("pacote_basico")
})
test('calcular valor total do projeto quando 30 horas e 30 reais/hora', () => {
const valorHora = 30;
const funcionalidades = ["formulario", "responsividade"];
const retornado = calcularValorTotalProjeto(funcionalidades, valorHora);
const esperado = 1056;
expect(esperado).toBe(retornado);
});

test('calcular valor total do projeto quando 30 horas e 30 reais/hora - simulando mock', () => {
// pacote.calcularPacote.mockReturnValue("pacote_basico")
const valorHora = 30;
const funcionalidades = ["formulario", "responsividade"];
const retornado = calcularValorTotalProjeto(funcionalidades, valorHora);
const esperado = 1056;
expect(esperado).toBe(retornado);
});
});

describe('pacote intermediario', () => {
beforeAll(() => {
pacote.calcularPacote.mockReturnValue("pacote_intermediario")
})
test('calcular valor total do projeto quando 70 horas e 50 reais/hora', () => {
const valorHora = 50;
const funcionalidades = ["setup", "formulario", "responsividade", "otimizacao_seo", "integracao_mailchimp"];
const retornado = calcularValorTotalProjeto(funcionalidades, valorHora);
const esperado = 4032;
expect(esperado).toBe(retornado);
});
});

describe('pacote premium', () => {
beforeAll(() => {
pacote.calcularPacote.mockReturnValue("pacote_premium")
})
test('calcular valor total do projeto quando 150 horas e 100 reais/hora', () => {
const valorHora = 100;
const funcionalidades = ["setup", "formulario", "responsividade", "otimizacao_seo", "integracao_mailchimp", "construcao_1_pagina", "integracao_api_propria"];
const retornado = calcularValorTotalProjeto(funcionalidades, valorHora);
const esperado = 11040;
expect(esperado).toBe(retornado);
});
});



Empty file.