Neste projeto implementei várias funções na resolução dos requisitos propostos e/ou testes unitários para garantir que as implementações das funções estão corretas, de acordo com o que está sendo solicitado em cada enunciado.
- Escrever testes unitários utilizando o módulo Jest do NodeJS para verificar o correto funcionamento das funções;
- Escrever funções de forma que elas atendam a testes já implementados;
- Escrever testes e funções utilizando uma abordagem de desenvolvimento orientado a testes.
- Aderência do código à especificação. Seu programa deve se comportar como especificado na próxima seção.
- Organização do seu código. Quebre seu código em funções. Prefira funções pequenas, simples e bem definidas a funções grandes e complexas.
- JavaScript e Jest
A função `average` recebe um array de tamanho variável e retorna a média dos valores recebidos. Caso a função receba algum valor não numérico ou um array vazio, o valor `undefined` deve ser retornado.
Todos os resultados devem ser arredondados para valores inteiros. Ex: 4,6 vira 5; 1,3 vira 1. O arquivo average.spec.js
contém os testes para average
já implementados. Implemente a função no arquivo src/average.js
de forma que ela atenda aos testes propostos.
O que será testado:
- A função
average
deve retornar a média de seus valores ao receber um array de números; - A função
average
deve retornarundefined
ao receber um array que contém valores não numéricos; - A função
average
deve retornarundefined
ao receber um array vazio.
A função `numbers` recebe um array de tamanho variável e retorna `true` se todos os parâmetros forem do tipo 'number' e `false` caso contrário.
Essa função já está implementada no arquivo src/numbers.js
. Escreva pelo menos quatro testes para essa função para garantir que a implementação de numbers
está correta.
O que será testado:
- A função
numbers
deve retornartrue
quando o array passado por parâmetro contém somente números.
Use template literals para escrever a função `vqv` que recebe o seu nome e a sua idade e retorna o parágrafo descrito abaixo:
`Oi, meu nome é Tunico!
Tenho 30 anos,
trabalho na Trybe e mando muito em programação!
#VQV!`
Caso a função vqv
seja chamada sem nenhum parâmetro, o valor undefined
deve ser retornado. O arquivo vqv.spec.js
contém os testes para vqv
já implementados. Implemente a função no arquivo src/vqv.js
de forma que ela atenda aos testes propostos.
O que será testado
vqv
deve ser uma função;- A função
vqv
deve retornar dados do tipo string; - A função
vqv
deve retornar a frase esperada quando passados parâmetros de nome e idade; - A função
vqv
deve retornarundefined
quando chamada sem parâmetro.
A função `circle` recebe o raio de um círculo e retorna um objeto contendo as suas informações: Raio, Área e Circunferência. Se não for especificado um raio, a função retorna `undefined`.
Essa função já está implementada no arquivo src/circle.js
. Escreva pelo menos seis testes para essa função para garantir que a implementação de circle
está correta.
O que será testado
- O teste da função
circle
, ao receber um raio, deve retornar um objeto com as informações corretas (Raio, Área e Circunferência).
A função `createStudent` recebe como parâmetro um **nome**, e retorna um objeto contendo duas chaves:
- name, contendo o nome passado como parâmetro;
- feedback, contendo uma função que retorna a frase
"Eita pessoa boa!"
ao ser chamada.
O arquivo createStudent.spec.js
contém os testes para createStudent
já implementados. Implemente a função no arquivo src/createStudent.js
de forma que ela atenda aos testes propostos.
O que será testado
- A função
createStudent
deve retornar um objeto que contenha duas chaves:name
, contendo o nome passado como parâmetro; efeedback
, contendo uma função que retorna a frase"Eita pessoa boa!"
ao ser chamada.
A função `productDetails` recebe duas strings que representam nomes de produtos, e retorna um array contendo dois objetos com os detalhes dos respectivos produtos:
productDetails('Alcool gel', 'Máscara');
Retorna:
[
{
name: 'Alcool gel'
details: {
productId: 'Alcool gel123'
}
},
{
name: 'Máscara'
details: {
productId: 'Máscara123'
}
}
]
Essa função já está implementada no arquivo src/productDetails.js
. Escreva pelo menos cinco testes para essa função no arquivo tests/productDetails.js
para garantir que a implementação de productDetails
está correta.
O que será testado
- O teste da função
productDetails
, ao receber duas strings, deve retornar um array de objetos e se cada objeto contém os dados necessários.
A função `calculator` recebe dois números inteiros como parâmetro e retorna um objeto com as seguintes chaves:
- sum; - mult; - div; - sub.
Para cada chave atribua como valor a operação correspondente à sua chave:
sum:
retorna o resultado da soma dos dois números;mult:
retorna o resultado da multiplicação dos dois números;div:
retorna o resultado da divisão dos dois números;sub:
retorna o resultado da subtração dos dois números.
Os resultados das divisões devem sempre ser arredondados para baixo.
Parâmetros:
- Dois números inteiros.
Comportamento:
calculator(1, 2); // { sum: 3, mult: 2, div: 0, sub: -1 }
Já a função arrayGenerator
converte objetos em arrays, de chaves, valores ou ambos. Ela deve receber dois parâmetros:
- o primeiro parâmetro deve ser uma string que indica o tipo de conversão;
- o segundo parâmetro deve ser um objeto semelhante ao que é retornado pela função calculator que você acabou de desenvolver.
Parâmetros:
- Uma string que indica o tipo de conversão;
- Um objeto no formato { sum: 3, mult: 2, div: 0, sub: -1 };
Comportamento:
arrayGenerator('keys', { sum: 3, mult: 2, div: 1, sub: 0 }) // [ 'sum', 'mult', 'div', 'sub' ]
arrayGenerator('values', { sum: 3, mult: 2, div: 1, sub: 0 }) // [ 3, 2, 1, 0 ]
arrayGenerator('entries', { sum: 3, mult: 2, div: 1, sub: 0 }) // [ [ 'sum', 3 ], [ 'mult', 2 ], [ 'div', 1 ], [ 'sub', 0 ] ]
O arquivo objPlayground.spec.js
contém os testes para calculator
e arrayGenerator
já implementados. Implemente as funções no arquivo src/objPlayground.js
de forma que ela atenda aos testes propostos.
O que será testado
- A função
calculator
deve retornar os valores esperados; - A função
arrayGenerator
deve retornar os valores esperados.
A função `myCounter` possui dois loops aninhados que inserem valores dentro de um array. Como podemos perceber, eles vão adicionando valores ao array até sua condição de parada.
Corrija a função myCounter
, sem eliminar nenhum dos loops de repetição, para que a função retorne o array correto. O arquivo myCounter.spec.js
contém os testes para myCounter
já implementados. Implemente a função no arquivo src/myCounter.js
de forma que ela atenda aos testes propostos.
O que será testado
- A função
myCounter
deve retornar os dados esperados de acordo com o que está implementado no teste.