Code Monkey home page Code Monkey logo

challenge-bexs's Introduction

Challenge Bexs

Descrição

Esse é o teste técnico realizado para o processo seletivo da Bexs.

Explicação arquitetural

  • Optei pelo máximo de desacomplamento possível, para isso utilizei programação modular (com isso posso modificar módulos e isso não vai interferir no funcionamento final da aplicação, contanto que eu não quebre o contrato das classes implementadas).
  • Dentro dos módulos, escolhi separar por controller, service, repository e um arquivo pras rotas.
    • Talvez soe repetitivo e algumas pessoas optariam por juntar controller e service, mas eu prefiro manter com a separação atual pois na service posso tratar de transformações nos objetos e executar as regras de negócio (por exemplo), enquanto na controller eu me preocupo apenas com a chamada http de fato.
    • Optei também por não juntar o arquivo de rotas com a controller pois assim acho que fica mais fácil desacopar, pois caso eu queira usar outro framework para servir http (como o Fastify por exemplo), eu apenas preciso manter o contrato da função (parseando os tipos dos parâmetros passados para a função existente na controller).
  • Decidi por não usar nenhum banco de dados ou sistema de cache pois isso iria apenas aumentar a complexidade da aplicação desnecessariamente. Caso isso se faça necessário, graças a programação modular e a forma que o código foi escrito implementar um banco de dados será muito fácil :)

Como rodar o projeto?

  • Renomeie o arquivo example.env para .env.
  • Rode o comando docker build . --build-arg ROUTE_PATH=input-routes.csv -t wricke/bexs_challenge para gerar uma imagem do docker.
  • Rode o comando docker-compose up para subir o container em tempo real.

Como testar as rotas da aplicação?

Para realizar os testes, é necessário usar algum aplicativo que faça requisições. Eu recomendo fortemente o Insomnia ou o Postman caso você prefira um app com interface. Caso faça mais o estilo "old school" e prefira usar o terminal, recomendo o cURL.

Como calcular a rota mais curta?

Como adicionar uma nova rota?

Como rodar os testes

Nessa aplicação, foram escritos testes apenas para as funções essencias da aplicação, ou seja, não foram escritos testes para a camada de "interface" (contato externo) da aplicação, apenas para testar o funcionamento do algoritmo de dijkstra.

Para rodar esses testes, siga as instruções:

Se já tiver buildado a imagem do docker

  • Rode o comando npm run test e verá o resultado dos testes realizados.

Se ainda não tiver buildado a imagem do docker, rode o comando

  • Rode o comando npm install para instalar as dependências do projeto.
  • Rode o comando npm run test para ver o resultado dos testes.

Referências utilizadas:

challenge-bexs's People

Contributors

wm4tos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.