Nodejs
node: v15.6.0
npm: 7.4.0
- Desafio
- Instalação
- Inicializando a aplicação
- Testes
- Estrutura do Projeto
- Dependências de desenvolvimento
Imagine uma lista de compras. Ela possui:
Itens
Quantidade de cada item
Preço por unidade/peso/pacote de cada item
Desenvolva uma função (ou método) que irá receber uma lista de compras (como a detalhada acima) e uma lista de e-mails. Aqui, cada e-mail representa uma pessoa.
A função deve:
Calcular a soma dos valores, ou seja, multiplicar o preço de cada item por sua quantidade e somar todos os itens
Dividir o valor de forma igual entre a quantidade de e-mails
Retornar um mapa/dicionário onde a chave será o e-mail e o valor será quanto ele deve pagar nessa conta
Para instalar as dependências utilize as linhas de comando do yarn
ou npm
, demonstradas a seguir:
yarn install
npm install
Caso você deseje realizar o procedimento com a lista de valores randômicos que é gerada automaticamente, utilize o comando a seguir:
npm run randomValues <QUANTITY_ITEMS> <QUANTITY_EMAILS>
QUANTITY_ITEMS: Valor inteiro da quantidade de itens que deseja processar.
QUANTITY_EMAILS: Valor inteiro da quantidade de emails que deseja processar.
Com essa opção, o programa irá gerar uma lista de items
e emails
aleatórios e irá armazená-la no arquivo data/input.json
.
Caso contrário, utilize o comando a seguir:
npm run specificValues
Com essa opção, o programa irá apenas realizar a leitura do arquivo data/input.json
com os valores informados por você. Os valores desejados devem estar no seguinte padrão:
[
{
"items": [
{
"item" : <type: String>,
"quantity" : <type: Integer>,
"price" : <type: Integer>
}
],
"emails": [
<type: String>
]
}
]
Para executar os testes, utilize o comando a seguir:
npm run test
│ index.js
│
├───data
│ input.json
│ output.json
│
├───src
│ └───services
│ file.js
│ processItems.js
│
└───tests
├───mocks
│ input.json
│
└───services
file.test.js
processItems.test.js
O diretório data
contém os arquivos de entrada e saída.
O diretório src/services
contém o arquivo file.js
, responsável por realizar a leitura/escrita dos dados, e o arquivo processItems.js
, responsável por processar os itens da lista.
O diretório tests/mocks
contém o arquivo de entrada com os dados para realizar os testes.
O diretório tests/services
contêm os arquivos de testes para os serviços criados em src/services
.
- jest: Framework responsável por automatizar testes.