Este é um projeto de uma loja de veículos que consiste em duas entidades principais: carros e motocicletas. Cada entidade possui sua própria API para criação, atualização, remoção e busca. O projeto utiliza Node.js e Express para construir as APIs, bem como o Mongoose como ODM para lidar com o banco de dados MongoDB. Além disso, o projeto usa o mocha e chai para testes unitarios fazendo stubs com sinon.
task | status |
---|---|
01 - Criar a rota /cars onde seja possível cadastrar um carro | ✔️ |
02 - Criar o endpoint para listar carros | ✔️ |
03 - Escrever testes para cobrir 30% da camada de Service | ✔️ |
04 - Criar a rota /cars/:id onde seja possível atualizar um carro por ID | ✔️ |
05 - Criar a rota /motorcycles onde seja possível cadastrar uma moto | ✔️ |
06 - Escrever testes para cobrir 60% da camada de Service | ✔️ |
07 - Criar a rota /motorcycles onde seja possível listar motos | ✔️ |
08 - Criar a rota /motorcycles/:id onde seja possível atualizar uma moto por ID | ✔️ |
09 - Escrever testes para cobrir 80% da camada de Service | ✔️ |
10 - Criar a rota /cars/:id onde seja possível excluir um carro por ID | ✔️ |
11 - Criar a rota /motorcycles/:id onde seja possível excluir uma moto por ID | ✔️ |
Para instalar e executar esse projeto, você precisará ter o Docker e o Docker Compose instalados em sua máquina.🐳
⚠ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com 1.26.0
por 1.29.2
.
git clone git@github.com:tercioab/car_shop_POO
cd car_shop_POO_SOLID
docker-compose up -d
docker exec -it car_shop bash.
npm install
npm run dev
npm run test:mocha
POST /cars
cria um novo carro.GET /cars
retorna lista de carros.GET /cars/:id
retorna um carrO específico pelo seu ID.PUT /cars/:id
atualiza um carro especifico pelo seu ID.DELETE /cars/:id
deleta um carro especifico pelo seu ID.
POST /motorcycles
cria um novo carro.GET /motorcycles
retorna lista de carros.GET /motorcycles/:id
retorna um carrO específico pelo seu ID.PUT /motorcycles/:id
atualiza um carro especifico pelo seu ID.DELETE /motorcycles/:id
deleta um carro especifico pelo seu ID.
Atributos | Descrição |
---|---|
id |
String contendo id do veículo |
model |
String contendo modelo do veículo |
year |
Number contendo ano de fabricação do veículo |
color |
String contendo cor principal do veículo |
status |
Booleano contendo status que define se um veículo pode ou não ser comprado (este atributo deve ser opcional e se não passado, deve ser false ) |
buyValue |
Number contendo valor de compra do veículo |
doorsQty |
Number contendo quantidade de portas de um carro |
seatsQty |
Number contendo quantidade de assentos de um carro |
Atributos | Descrição |
---|---|
id |
String contendo id do veículo |
model |
String contendo modelo do veículo |
year |
Number contendo ano de fabricação do veículo |
color |
String contendo cor principal do veículo |
status |
Booleano contendo status que define se um veículo pode ou não ser comprado (este atributo deve ser opcional e se não passado, deve ser false ) |
buyValue |
Number contendo valor de compra do veículo |
category |
String contendo categoria da moto (opções: Street , Custom ou Trail ) |
engineCapacity |
Number contendo capacidade do motor |
Este projeto é aberto a contribuições. Se você encontrar algum bug ou tiver ideias para novas funcionalidades, sinta-se à vontade para abrir uma issue ou enviar um pull request.