Instruções
Crie um programa de gestão de inventário
Neste laboratório, você deve desenvolver um programa de gestão de inventário que permitirá adicionar, atualizar, encontrar e remover produtos do inventário. Você usará um array de objetos para representar o inventário, onde cada objeto terá 'name' e 'quantity' como chaves.
Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório.
Histórias de Usuário:
1. Você deve declarar um array vazio chamada
inventory, que armazenará objetos de produtos tendo uma chave name com o valor de uma string em minúsculas, e uma chave quantity, com o valor de um inteiro.
1. Você deve criar uma função chamada findProductIndex que recebe o nome do produto como argumento e retorna o índice do objeto do produto correspondente dentro do array inventory. A função deve sempre usar a forma em letras minúsculas do nome do produto para realizar a busca. Se o produto não for encontrado, a função deve retornar -1.
1. Você deve criar uma função chamada addProduct, que recebe um objeto de produto como argumento.
1. Se o produto já estiver presente no inventário, a função addProduct deve atualizar o valor de quantity adicionando a quantidade passada para a função à quantity atual e registrar no console o nome do produto seguido de um espaço e quantity updated.
1. Se o produto não estiver presente no inventário, a função addProduct deve enviar o produto para o array inventory e registrar o nome do produto no console, seguido por um espaço e added to inventory.
1. Você deve criar uma função chamada removeProduct, que recebe o nome do produto e a quantidade como argumentos.
1. A função removeProduct deve subtrair a quantidade passada do objeto do produto correspondente dentro do inventário e registrar a string Remaining <product-name> pieces: <product-quantity> no console, onde <product-name> deve ser substituído pelo nome do produto, e <product-quantity> deve ser substituído pela quantidade do produto.
1. Se a quantidade após a subtração for zero, a função removeProduct deve remover o objeto do produto do inventário. Se a quantidade no inventário não for suficiente para realizar a subtração, a função removeProduct deve registrar a string Não há <product-name> suficiente disponível, peças restantes: <product-quantity> no console.
1. Se o produto a ser removido não estiver presente no inventário, a função removeProduct deve registrar <product-name> não encontrado no console.
Nota: Para evitar conflitos, mantenha apenas o registro mencionado nas histórias de usuário ao executar os testes.
O que fazer:
Testes:
- Você deve declarar um array vazio chamado `inventory`.
- Você deve ter uma função chamada `findProductIndex`.
- `findProductIndex("flour")` deve retornar o índice do objeto que tem `name` igual a `"flour"` dentro do array `inventory`.
- `findProductIndex("FloUr")` deve retornar o índice do objeto que possui `name` igual a `"flour"` dentro do array `inventory`.
- `findProductIndex("Flour")` deve retornar `-1` quando nenhum objeto com `name` igual a `"flour"` for encontrado dentro do array `inventory`.
- Você deve ter uma função chamada `addProduct`.
- `addProduct({name: "FLOUR", quantity: 5})` deve adicionar `5` ao valor do `quantity` do objeto que tem `name` igual a `"flour"` no array `inventory`.
- `addProduct({name: "FLOUR", quantity: 5})` deve registrar `flour quantity updated` quando um objeto com `name` igual a `"flour"` for encontrado no array `inventory`.
- `addProduct({name: "FLOUR", quantity: 5})` deve enviar `{name: "flour", quantity: 5}` para o array `inventory` quando nenhum objeto com `name` igual a `"flour"` for encontrado no inventário.
- `addProduct({name: "FLOUR", quantity: 5})` deve registrar `flour added to inventory` quando nenhum objeto com `name` igual a `"flour"` for encontrado no inventário.
- Você deve criar uma função chamada `removeProduct`.
- `removeProduct("FLOUR", 5)` deve registrar `flour not found` quando nenhum objeto com `name` igual a `"flour"` for encontrado no array `inventory`.
- `removeProduct("FLOUR", 5)` deve subtrair `5` do valor de `quantity` do objeto que tem o `name` igual a `"flour"` dentro do array `inventory`.
- `removeProduct("FLOUR", 5)` deve registrar `Remaining flour pieces: 15` no console, quando `inventory` for igual a `[{name: "flour", quantity: 20}, {name: "rice", quantity: 5}]`.
- Se `quantity` após a subtração for zero, `removeProduct` deve remover o objeto de produto do inventário.
- `removeProduct("FLOUR", 10)` deve registrar `Not enough flour available, remaining pieces: 5` quando `inventory` for igual a `[{name: "flour", quantity: 5}, {name: "rice", quantity: 5}]`.
Preview