Skip to content

Latest commit

 

History

History
68 lines (53 loc) · 1.57 KB

README.md

File metadata and controls

68 lines (53 loc) · 1.57 KB

🛒 Programa de Formação em Elixir | Teste Técnico

🏃🏾‍♂️ Instruções

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,
 }}

🏭 Detalhes

  • 🧪 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 ou unless em um easy return