jaykon-w / test-nodejs

Teste NodeJS - Beleza na Web

Home Page:https://www.belezanaweb.com.br/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rodando este projeto

  • Node: v14.16.0

Com docker-compose

docker-compose up --build -d

Em modo de desenvolvimento

npm run start:dev

Documentação

Swagger local

Nota

Neste projeto ainda seria possivel aplicar testes no serviço e testes de integração. Os testes só foram criados para o controller. Ainda para ser uma RESTful, alguns outros conceitos deveriam ser aplicados como suporte a filtros, projeção, ordenação e paginação a um endpoint de listagem. E também o "odiado" HATEOAS (olha o trocadilho, kkkk), que da navegabilidade aos recursos, através de links.

Backend Test

Build Status

Esta é uma avaliação básica de código.

O objetivo é conhecer um pouco do seu conhecimento/prática de RESTful e NodeJS.

Recomendamos que você não gaste mais do que 4 - 6 horas.

Faça um fork deste repositório.

Ao finalizar o teste, submeta um pull request para o repositório que nosso time será notificado.

Tarefas

Com a seguinte representação de produto:

{
  "sku": 43264,
  "name": "L'Oréal Professionnel Expert Absolut Repair Cortex Lipidium - Máscara de Reconstrução 500g",
  "inventory": {
    "quantity": 15,
    "warehouses": [
      {
        "locality": "SP",
        "quantity": 12,
        "type": "ECOMMERCE"
      },
      {
        "locality": "MOEMA",
        "quantity": 3,
        "type": "PHYSICAL_STORE"
      }
    ]
  },
  "isMarketable": true
}

Crie endpoints para as seguintes ações:

  • Criação de produto onde o payload será o json informado acima (exceto as propriedades isMarketable e inventory.quantity)

  • Edição de produto por sku

  • Recuperação de produto por sku

  • Deleção de produto por sku

Requisitos

  • Toda vez que um produto for recuperado por sku deverá ser calculado a propriedade: inventory.quantity

      A propriedade inventory.quantity é a soma da quantity dos warehouses
    
  • Toda vez que um produto for recuperado por sku deverá ser calculado a propriedade: isMarketable

      Um produto é marketable sempre que seu inventory.quantity for maior que 0
    
  • Caso um produto já existente em memória tente ser criado com o mesmo sku uma exceção deverá ser lançada

      Dois produtos são considerados iguais se os seus skus forem iguais
    
  • Ao atualizar um produto, o antigo deve ser sobrescrito com o que esta sendo enviado na requisição

      A requisição deve receber o sku e atualizar com o produto que tbm esta vindo na requisição
    

Dicas

  • Os produtos podem ficar em memória, não é necessário persistir os dados
  • Testes são sempre bem-vindos 😃

About

Teste NodeJS - Beleza na Web

https://www.belezanaweb.com.br/


Languages

Language:TypeScript 94.8%Language:JavaScript 2.5%Language:Dockerfile 2.5%Language:Shell 0.2%