Essa api faz parte do desafio backend da empresa In-Gaia
O objetivo dessa api é servir o preço do metro quadrado para o usuário.
- Typescript
- NodeJS
- Jest
- Supertest
- Express
- MongoDb
- Nodemon
- Docker
- Heroku
A API1 utiliza as seguintes ferramentas para testes
- Jest: framework de teste
- Jest-mongodb: executa o banco de dados Mongo em memória
- supertest: utilizado nos testes de integração, nas rotas http
Executar testes:
-
npm run test:unit
- Executa os testes unitários
-
npm run test:integration
- Executa os testes de integração
-
npm run test:ci
- Executa os testes de unidade, testes de integração e cobertura de testes
Comandos para instalar e inicializar
-
npm install
- Instala as dependências da api no seu computador
-
npm run up
- Executa a api baseado em uma imagem do node 14.x (ver especificação da engine no package.json)
- Cria um container para a aplicação com o nome in-gaia-teste-api1-container
Comandos para finalizar a execução
- npm run down
- Para a execução do container in-gaia-teste-api1-container, portanto, desliga a aplicação API1
O Postman pode ser utilizado para consumir a api em ambiente local e de produção.
A construção da api1 foi feita por camadas, conforme o diagrama abaixo:
Leitura do diagrama
-
A: Camada presentation
- Depende da camada de domínio.
- Essa camada executa um ou mais casos de uso.
- Validações de dados podem ser implementadas nessa camada, para garantir boa execução dos casos de uso.
- Nesta aplicação essa camada apresenta os dados através de uma rota http, do tipo get.
-
B: Camada domain
- Esta camada não depende de nenhuma outra camada da aplicação.
- Define o model meter-price
- Define o caso de uso para carregar o preço do metro quadrado.
-
C: Camada data
- Esta camada depende das fontes de dados da aplicação.
- Coordena os dados vindos de diferentes fontes de dados.
- API1 tem uma fonte de dados, o MongoDB.
- Esta camada utiliza o repositório do MongoDB.
-
D: Camada infra
- Esta camada conhece bibliotecas externas, no caso, o drive do MongoDB.
- Esta camada implementa os repositórios das fontes de dados, no caso, o MongoDB.
- Outras bibliotecas, como por exemplo Axios, poderiam ficar nessa camada.
-
E: Camada main
- Esta camada depende da camada de apresentação.
- O servidor web(Express) e as rotas são configurados nessa camada.
- Esta camada implementa recursos necessários para que as rotas http funcionem.
- Centralizar arquivos de teste(e relacionados, como mocks) em uma pasta de testes
- Adicionar Swagger ao projeto
- Processos de CI/CD no Heroku