/questpool

Um simples repositório de questões.

Primary LanguageRuby

Questpool (Desafio Técnico)

Essa aplicação tem a finalidade de ser um repositório de questões, onde será possível criar questões que poderão ser avaliadas por um administrador, que por sua vez poderá fazer sugestões de como melhorar as questões adicionadas pelos demais usuários.

Modelo

Classes

Modelo Banco de Dados

Um usuário (User) pode criar questões quando tiver a permissão (atributo role) de 'user' ou poderá avaliar as questões quando a sua permissão for 'admin'. Quando um usuário cria uma questões estará associado diretamente a questão, quando o usuário reprova uma questão, ele está o usuário estará associado por meio da dica deixada (Hint). Cada questão tem cinco alternativas associadas sendo que uma deve ser marcada como correta (atributo correct).

Especificações Técnicas

  • Versão Ruby: 2.3.4
  • Versão Rails: 5.1.4
  • Banco de Dados: Mysql
  • Schema de Autenticação: Device
  • Sistema de Dependencias: Bundler
  • Bibioteca de testes: Rspec

Instalação

  1. Inicialmente, instale as depêndencias com o comando:
bundle install
  1. Altere o arquivo config/database.yml adicionando as credenciais do banco mysql local.

  2. Crie as bases de dados com o seguinte comando:

rails db:create
  1. Crie as tabelas da aplicação por meio rodando as migrations da aplicação com o comando:
rails db:migrate
  1. O arquivo db/seeds.rb possui um código Ruby que cria um usuário administrador do sistema. O comando abaixo roda o código nesse arquivo e exibe as credenciais para acesso do sistema para o usuário administrado criado.
rails db:seed  
  1. Inicialize o servidor
rails s
  1. Acesse no browser o endereço
localhost:3000/

Se tudo ocorreu bem, você deve ver a seguinte tela:

Tela Incial

Testes

Para rodar os testes da aplicação utilize:

bundle exec rspec

TODO

  • Tradução de campos e Modelos, hora funciona, hora não funciona.
  • Mensagens de erros estão aparecendo em ingles(ligado ao todo acima)
  • Metodos approve e disapprove estão como get, por conta de um problema com a autenticação do devise devem ser post.
  • Refatorar o question_controller_spec.rb
  • Criar funcionalidade para avaliar uma questão após a outra.
  • Limitar no controller para que o usuário comum não possa ter acesso as actions approve e disapprove.