Essa api faz parte do desafio backend da empresa In-Gaia
O objetivo dessa api é calcular e servir ao usuário o valor/preço do imóvel.
- Typescript
- NodeJS
- Jest
- Supertest
- Express
- Axios
- Nodemon
- Heroku
A API2 utiliza as seguintes ferramentas para testes
- Jest: framework de teste
- 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-api2-container
Comandos para finalizar a execução
- npm run down
- Para a execução do container in-gaia-teste-api2-container, portanto, desliga a aplicação API2
O Postman pode ser utilizado para consumir a api em ambiente local e de produção.
A construção da api2 foi feita por camadas, conforme o diagrama abaixo:
Leitura do diagrama
-
A: Camada presentation
- Depende da camada de domínio.
- Esta camada executa um ou mais casos de uso.
- Ocorre a validação dos dados recebidos pela requisição http, para garantir a execução do caso de uso.
- Esta camada implementa a regra de negócio: a quantidade de metros quadrados deve estar entre 10 e 10000.
-
B: Camada domain
- Esta camada não depende de nenhuma outra camada da aplicação.
- Define o model property-price e meter-price
- Implementa uma função que calcula o valor do imóvel
- Parâmetros dessa função:
- Quantidade de metros quadrados.
- Preço do metro quadrado.
- Retorno dessa função:
- O valor do imóvel.
- Parâmetros dessa função:
-
C: Camada data
- Esta camada depende das fontes de dados da aplicação.
- Coordena os dados vindos de diferentes fontes de dados.
- API2 tem uma fonte de dados, a API1.
- Esta camada utiliza um cliente http para consumir a API1.
-
D: Camada infra
- Esta camada conhece bibliotecas externas, no caso, o cliente http - Axios.
- Esta camada implementa os repositórios/clientes das fontes de dados, no caso, o Axios.
- Outras bibliotecas, como por exemplo MongoDb, poderiam ficar nesta 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