1. Instalar as dependências do projeto
> mix deps.get
2. Compilar o projeto e rodar os testes
> mix compile && mix test
3. Adicionar os dados de testes
Os dados para a validação devêm ser inseridos no arquivo payload.json, na pasta files.
{
"emails": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"shopping_list": [
{
"name": "Teclado hyperX",
"amount": 1,
"price": 25000
},
{
"name": "Mouse hyperX",
"amount": 1,
"price": 25000
}
]
}
4. Executando o projeto
Para executar o projeto basta abrir o Interactive Shell do Elixir e rodar o comando ShoppingCart.main. Exemplo:
> iex -S mix
Interactive Elixir (1.11.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> ShoppingCart.main
{:ok,
%{
"[email protected]" => 4166,
"[email protected]" => 4166,
"[email protected]" => 4166,
}}
- 🧪 Utilizei o TDD desenvolver a solução do teste
- Tentei utilizar
ExUnit.Parameterized
, mas acabei descartando dado problemas de no uso da API da macro.- Objetivo: Criar data providers para testar com diferentes inputs/outputs um mesmo test.
- Preferi utilizar mais o Pattern Matching e o Guards para fazer algumas validações em vez de utilizar um
if
ouunless
em umeasy return