Chess Pieces

Chess pieces é uma API onde é possível fazer um CRUD de peças de xadrez.

Além do CRUD, é possível fornecer uma posição do tabuleiro em notação algébrica junto com o ID de uma das peças existentes, se a peça for um cavalo ela fornecerá todos os movimentos possíveis para os próximos 2 turnos.

Índice


Pré-requisitos: Ambiente

  1. Clone o repositório

  2. Crie um ambiente virtual com o virtualenv

  • Instale
   [sudo] pip install virtualenv
  • Após instalar, crie o seu ambiente virtual:
   virtualenv <nome_do_seu_ambiente>
  • Ative o seu ambiente:
   source <nome_do_seu_ambiente>/bin/activate
  • Se preferir, para usar o virtualenv com uma versão diferente do python
    virtualenv --python=usr/python3.6/nome_env
  1. Instale os requirements de desenvolvimento ou os requirements apenas para execução:
   pip install -r requirements/dev.txt

Pré-requisitos: Database

  1. Instale o docker
   sudo apt install docker
  1. Instale o docker compose
   sudo apt install docker-compose
  1. [Recomendado] Após a instalação do docker é interessante fornecer a permissão de super usuário, caso contrário você terá que usar "sudo" sempre que precisar usar qualquer comando do docker
   sudo groupadd docker
   sudo gpasswd -a $USER docker

Será necessário fazer log out and log back

  1. Diga ao compose para usar o arquivo desenvolvimento.yml
   docker-compose -f desenvolvimento.yml up -d
  1. Pode ser necessário reiniciar o docker compose
   docker-compose -f desenvolvimento.yml restart -t 1
  1. Execute as migrations
   src/python manage.py migrate

Testes Automatizados

  1. Para executar os testes:
    src/pytest

Testes Manuais: EndPoints

  1. Suba o servidor local:
   src/python manage.py runserver
  1. Para criar uma nova peça:
   curl -X POST -d 'name={nome da peça}' -d 'color={cor da peça}' 'http://127.0.0.1:8000/'
  1. Buscar uma peça por nome e cor:
   curl "http://127.0.0.1:8000/?name={nome da peça}&color={cor da peça}"
  1. Listar os movimentos possíveis de um cavalo para os próximos 2 turnos:
   curl "http://127.0.0.1:8000/moves/?cell={celula em notação algebrica}&piece_id={id do cavalo}"
Demais Endpoints:
  • Listar todas as peças existentes:
   curl 'http://127.0.0.1:8000/'
  • Buscar uma peça por ID:
   curl 'http://127.0.0.1:8000/{id}/'
  • Editar uma peça:
   curl -X PUT -d 'name={novo nome}' -d 'color={nova cor}' 'http://127.0.0.1:8000/{id}/'
  • Apagar um contato:
   curl -X DELETE 'http://127.0.0.1:8000/{id}/'