Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Melhorias na qualidade e adição de testes #8

Open
wants to merge 77 commits into
base: master
Choose a base branch
from

Conversation

IgorAugst
Copy link

@IgorAugst IgorAugst commented Jan 12, 2024

Essa Pull Request traz diversas melhorias no projeto do geolocalizador:

  • As consultas SQL foram refatoradas utilizando funções mais atualizadas
  • A conexão com o banco deixa de ser feita em cada rota e passa a ser feita apenas uma vez para o projeto, em um arquivo separado.
  • Foram adicionados testes nas rotas do projeto, dentro do diretório test, para executar basta rodar o comando npm test. Os testes utilizam a biblioteca mocha
  • A lógica das rotas foi movida para um arquivo específico, desacoplando-a. Anteriormente tudo ficava em um mesmo arquivo na pasta routes, agora as funções necessárias para executar cada rota estão localizadas no arquivo indexRouteController
  • Dentro da rota de geolocalização existia uma requisição http para o próprio serviço, buscando os dados de ruas e locais. Com as funções desacopladas das rotas esse problema foi eliminado.
  • Diversos cheiros de código foram removidos, melhorando a qualidade e complexidade do código
  • A rota do geolocalizador foi refatorada para reduzir sua complexidade e tamanho. Os diferentes métodos de geolocalização e trechos repetidos foram extraídos para funções própria.
  • Códigos duplicados foram removidos.
  • Adiciona um Dockerfile na pasta SQL que constrói uma imagem postgres com os dados do backup já presentes. Para utilizar o Dockerfile é necessário adicionar o arquivo .sql na mesma pasta e alterar o nome do arquivo no Dockerfile para corresponder com o arquivo. O dockerfile utiliza o Multi-stage build, portanto os dados não são carregados toda vez que o container é iniciado, poupando tempo.
  • Adiciona a biblioteca Dotenv para o suporte de arquivos .env com as variáveis do banco de dados.
  • Corrige um bug na qual algumas ruas como “rua dom antonio de mello, 5, 1900”, geravam uma exceção e não retornavam mensagem nenhuma ao usuário, em vez de retornar que não foi encontrada. Agora, é retornado a mensagem correta.
  • Adiciona tratamento de erros nas rotas, utilizando try catch,
  • A versão do node foi atualizada para 21.5, junto com as bibliotecas sem suporte.
  • Adiciona pipeline de testes e análise de qualidade de código utilizando github actions. Em qualquer commit ou pull request, a pipeline será executada. Primeiramente a imagem com o backup do Pauliceia é baixada do repositório de containers e executado. Após isso, as dependências do node são instaladas e os testes iniciados. Na última etapa, a pipeline executa o escaneamento da qualidade do código com o sonarqube e faz o upload para o site. Para utilizar a pipeline são necessárias algumas etapas:
    • Criar um projeto no Sonarqube (Gratuito, basta seguir as intruções no site do sonarqube para hospedar e instalar)
    • Adicionar a chave do projeto gerado no site no arquivo sonar-project.properties, na chave sonar.projectKey
    • Adicionar os seguintes secrets no github:
      • DOCKER_USERNAME
      • DOCKER_PASSWORD
      • DOCKER_IMAGE = imagem do banco do Pauliceia. Deve estar armazenada no Docker hub
      • SONAR_TOKEN = token de acesso do sonarqube
      • SONAR_HOST_URL = url do site sonarqube
  • Foi adicionado um Dockerfile na raiz que contrói uma imagem do projeto usando node 21.5. o container expõe a porta 3000.

Para a execução do novo código, existem duas possibilidades:

  1. Construir o Dockerfile encontrado na raiz e executar no servidor, expondo a porta 3000 com a flag -p
  2. Instalar o node versão 21.5, instalar as bibliotecas com npm, executar npm start

Para garantir a qualidade do código, foram adicionados diversos testes, com uma cobertura de 87,7%

image

É esperado que essas alterações facilitem futuras manutenções no código.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant