Projeto desenvolvido durante o módulo de back-end do curso de desenvolvimento web da Trybe.
Neste projeto foi desenvolvida uma API RESTful de gerenciamento de vendas no formato dropshipping. Dentro da API é possível criar, visualizar, deletar e atualizar os produtos e as vendas.
Para está aplicação foi utilizado um banco de dados MySQL.
A API foi criada utilizando arquitetura MSC (model-service-controller).
Foram desenvolvidos testes unitários para a aplicação utilizando as ferramentas Mocha, Chai e Sinon.
Desempenho
Aprovado com 100% de desempenho em todos os requisitosRequisitos
Requisitos obrigatórios:
- Crie endpoints para listar produtos
- Desenvolva testes que cubram no mínimo 5% das camadas da sua aplicação
- Crie endpoint para cadastrar produtos
- Crie validações para produtos
- Desenvolva testes que cubram no mínimo 10% das camadas da sua aplicação
- Crie endpoint para validar e cadastrar vendas
- Desenvolva testes que cubram no mínimo 15% das camadas da sua aplicação
- Crie endpoints para listar vendas
- Desenvolva testes que cubram no mínimo 20% das camadas da sua aplicação
- Crie endpoint para atualizar um produto
- Desenvolva testes que cubram no mínimo 25% das camadas da sua aplicação
- Crie endpoint para deletar um produto
Requisitos bônus:
- Desenvolva testes que cubram no mínimo 30% das camadas da sua aplicação
- Crie endpoint para deletar uma venda
- Desenvolva testes que cubram no mínimo 35% das camadas da sua aplicação
- Crie endpoint para atualizar uma venda
- Desenvolva testes que cubram no mínimo 40% das camadas da sua aplicação
- Crie endpoint products/search?q=searchTerm
- Desenvolva testes que cubram no mínimo 50% das camadas da sua aplicação
- Desenvolva testes que cubram no mínimo 60% das camadas da sua aplicação
GET /products
Lista todos os produtos cadastrados no banco de dados
- Se bem-sucedido, retorna status 200 e um array com todos os produtos cadastrados
GET /products/:id
Lista apenas o produto correspondente ao id da rota
- Se bem-sucedido, retorna status 200 e um objeto contendo as informações do produto
GET /products/search?q=searchTerm
Lista todos os produtos que possuem em seu nome o termo passado na rota
- Se bem-sucedido, retorna status 200 e um array contendo os produtos que correspondem a busca
- Se o termo de busca for vazio, retorna status 200 e um array contendo todos os produtos cadastrados
POST /products
Cadastra um novo produto no banco de dados
- Se bem-sucedido, retorna status 201 e um objeto contendo os dados do novo produto
PUT /products/:id
Altera as informações de um produto cadastrado no banco de dados
- Se bem-sucedido, retorna status 200 e um objeto contendo os dados atualizados do produto
DELETE /products/:id
Remove um produto cadastrado do banco de dados
- Se bem-sucedido, retorna apenas o status 204
GET /sales
Lista todas as vendas cadastradas no banco de dados
- Se bem-sucedido, retorna status 200 e um array com todas as vendas cadastradas
GET /sales/:id
Lista apenas a venda correspondente ao id da rota
- Se bem-sucedido, retorna status 200 e um array contendo as informações da venda
POST /sales
Cadastra uma nova venda no banco de dados
- Se bem-sucedido, retorna status 201 e um objeto contendo o id da venda e um array com as informações dos produtos vendidos
PUT /sales/:id
Altera as informações de uma venda cadastrada no banco de dados
- Se bem-sucedido, retorna status 200 e um objeto contendo o id da venda e um array com as informações atualizadas dos produtos vendidos
DELETE /sales/:id
Remove uma venda cadastrada no banco de dados
- Se bem-sucedido, retorna apenas um status 204
- Criar uma aplicação utilizando Express.js
- Criar uma API RESTful utilizando arquitetura MSC (Model-Service-Controller)
- Validar dados das requisições utilizando a biblioteca Joi
- Implementar testes unitários utilizando as ferramentas Mocha, Chai e Sinon
- JavaScript
- Node.js
- Express.js
- DotEnv
- Joi
- MySQL
- Mocha.js
- Chai.js
- Sinon.js
- Docker