Produtos Favoritos dos Clientes

API para controle de produtos favoritos dos clientes

Instalação

Tenha instalado em sua maquina o Git e Node.js 10.0.0 (ou superior). Caso prefira, instale o Yarn.

Você também precisará do mongoDB, mas poderá executá-lo através do Docker no docker-compose.yml.

  1. Fork este repositório e crie um novo branch — ou crie um novo branch caso tenha permissão.

  2. Depois de obter sua cópia local, instale suas dependências:

    npm install

    ou

    yarn
  3. Inicie o mongoDB — ou execute o Docker Compose:

    docker-compose up

    Ele executará o mongoDB em sua máquina virtual docker na porta 27017, mas você pode alterá-la em docker-compose.yml.

  4. Crie um arquivo .env no diretório raiz, com as sequintes variaveis:

    SERVER_PORT=3000
    APP_SECRET=tokenSecret
    DB_URL=mongodb://localhost:27017/customers
    API_PRODUCTS=http://challenge-api.luizalabs.com

    APP_SECRET pode ser o valor que desejar.

Execução

Após a instalação, você podera executar a aplicação em modo de desenvolvimento:

npm run dev

ou

yarn dev

Isso iniciará o servidor em localhost:3000 (se você não alterou a propriedadePORT em .env)

Build

Execute:

npm run build

ou

yarn build

Isso irá criar um diretório dist na raiz, com a aplicacão preparada para ser executada em producão. Execute o comando abaixo dentro do direrório dist para poder executar a aplicação:

node server.js

Testes

Todos os arquivos de teste estão localizados na pasta __tests__

Use o seguinte comando para executar os testes:

npm test

ou

yarn test

API's

Login

POST: /sessions

Faça o login e forneça o token de autenticação (necessário para acessar as outras APIs):

{
  "email": "user@test.com",
  "password": "123456"
}

O token retornado deve ser enviado no header Authorization das próximas API's, da seguinte forma: Bearer <token>

Clientes

GET: /customers/?page=<NUMERO_DA_PAGINA>

O parametro page é opcional. Caso ele não seja fornecido, será retornado os registros da página 1`

Obtem todos os clientes

GET: /customers/<ID_CLIENTE>

Obtem um cliente pelo ID

POST: /customers

Cadastra um novo cliente

{
  "name": "André Coelho",
  "email": "andrevrcoelho@hotmail.com"
}

PUT: /customers/<ID_CLIENTE>

Atualiza um cliente

{
  "name": "André Coelho",
  "email": "andrevrcoelho@hotmail.com"
}

DELETE: /customers/<ID_CLIENTE>

Exclui um cliente

Produtos favoritos

POST: /customers/<ID_CLIENTE>/favorites-products

Adiciona um produto favorito para um cliente

{
  "productId": "<ID_PRODUTO>"
}

ID de um produto disponivel na API de produtos do Magalu neste link

GET: /customers/<ID_CLIENTE>/favorites-products

Obtem a lista de produtos favoritos de um cliente

DELETE: /customers/<ID_CLIENTE>/favorites-products/<ID_PRODUTO>

Exclui um produto da lista de favoritos de um cliente

Licença

MIT