Skip to content

jorgedjr21/admission_api

Repository files navigation

Admission API (2018_11_21 - Challange)

API para gerenciar admissão, matrícula e mensalidades de alunos

Projeto e Modificações

O projeto foi criado em cima da base passada, com alguns adicionais:

  • Adiconado Rubocop para verificar melhores práticas
  • Adicionado SimpleCov para covertura de testes (está com 99,02% de cobertura, segundo a ferramenta)
  • Ambiente criado com o Docker e cocker-compose (arquivos estão disponíveis no repositório)
  • Ajustes e criações de migrations necessárias para implementação
  • Os pagamentos gerados para cada mensalidade são dos dois tipos (cartão e boleto), dessa forma, o aluno fica com o poder de escolha sobre qual maneira vai pagar.

Ambiente Heroku

Para testar em um ambiente web, subi a aplicação para o Heroku, através do seguinte link: https://ancient-chamber-63130.herokuapp.com/ Há apenas uma pagina inicial com algumas simples informações sobre a API. Pode-se testar utilizando o postman. O ambiente do Heroku foi criado com PostgreSQL pois não há suporte ao SQLite3. Porém, o ambiente de dev está utilizando o SQLite3

Ambiente de Desenvolvimento

Meu ambiente de desenvolvimento é Linux (Xubuntu), portanto as instruções abaixo são baseadas nesse sistema. Para testar utilizando o rspec, pode-se utilizar o ambiente de desenvolvimento. Para subi-lo no com o docker, é necessário a instalação das ferramentas:

Subindo o ambiente

Para subir o ambiente, primeiramente é necessário construir o container. Para isso, basta entrar na pasta do projeto e rodar o seguinte comando:

foo@pc:~$ docker-compose build

Esse comando fará o build e instalação dos componentes necessários ao containter.

Após a instalaçao, pode-se acessar o container com o seguinte comando:

foo@pc:~$ docker-compose run --rm admission_api bash

Ao acessa-lo, pode rodar o comando rspec para dar inicio aos testes automatizados. A ferramenta de cobertura de testes mostrará ao final do teste a porcentagem de cobertura. Também criará uma página HTML em coverage/ com mais informações.