Você está participando da rodada de contratação da Emprego Ligado, esse teste nos permite avaliar seu código e habilidades para propor arquiteturas e solucionar problemas.
Sem tempo para realizar testes técnicos?
Bem, você pode enviar o link de uma Pull Request com uma contribuição sua para qualquer projeto OpenSource ou algum projeto próprio que você acredita que demonstre o seu nível técnico e a qualidade do seu código. Projetos próprios sem cobertura de testes, sem documentação ou sem integração contínua não serão considerados
Mas caso você prefira/deseje fazer o nosso teste técnico, você pode utilizar qualquer lib/gem ou framework, mas quanto mais codigo seu for utilizado (leia-se não gerado automaticamentes por frameworks) melhor você poderá ser avaliado.
O seu teste deve ter um REAMDE com os passos necessários para:
- Rodar o projeto;
- Instalar as dependências (de preferência utilizando
docker-compose
); - Rodar os testes automatizados;
- Aceitaremos soluções escritas em Ruby ou Go, ou ambas;
Crie um repositório no Gitlab, GitHub ou Bitbucket e nos envie o link para o email [email protected]
, não tem um limite para entregar o teste, faça no seu tempo, se antes de finalizar achar que tem o suficiente para avaliarmos seu trabalho, envie que avaliamos todas as submissões;
Você precisará criar duas aplicações:
- A primeira aplicação irá expor uma API seguindo os padrões REST para:
- criar, ativar e listar os Jobs;
- listar a porcentagem e número de Jobs ativos por categoria;
-
A segunda aplicação deverá ser responsável por ler o arquivo "jobs.txt", extrair a informação referente aos jobs, e sincronizar os dados com a aplicação 1. Fica a seu critério escolher a maneira que as applicaçãoes irão se comunicar.
-
Certifique-se de que a aplicação seja
idempotente
, para isso você pode considerar que o atributo partnerID de cada Job é sempre único durante a importação; -
Todo Job recem importado deve ser salvo no estado 'draft';
-
A aplicação responsável por coletar os dados do arquivo deve atender as seguintes regras:
- importar somente jobs onde a data em que irá expirar for maior do que a data da importação;
- importar somente 80% do total de jobs listados no arquivo;
Os endpoints disponíveis na aplicação estão listado abaixo, e os classificados como Protected
devem exigir uma autenticação, mas fica ao seu critério propor qualquer método utilizar.
Name | Method | URL | Protected |
---|---|---|---|
List | GET | /jobs | ✘ |
Create | POST | /jobs | ✓ |
Activate | POST | /jobs/{:id}/activate | ✘ |
Percentage | GET | /category/{:id} | ✓ |
- Sua API deve conter os 3 endpoints listados acima
- Sua API deve retornar JSON válidos em qualquer endpoint;
- Seu projeto deve ter uma suíte de testes automatizados, quanto maior a cobertura melhor;
- Não necessário utilizar UI;
- Qualidade da abstração da solução;
- Estrutura do código, e qualidade dos testes unitários;
- Projeto rodando dentro de um container;
Bonus points:
- Ter configurado no projeto qualquer serviço de integração contínua;
- Conseguir levantar toda a solução com um simples
docker-compose up
; - Utilizar message queue;
- Suas respostas durante o Code Review
- Seguir o guia de estilo padrão de mercado para a linguagem que você escolher usar
- Um histórico do git (mesmo que breve) com mensagens claras e concisas.
#exemplo do jobs.txt partnerId|title|categoryId|ExpiresAt 1123|Vendedor|3|sex, 21 ago 2015 11:04:52 GMT 1245|Vendedor de cosméticos|7|ter, 28 fev 2017 21:00:00 GMT
Aqui talvez podemos pedir para ser uma rotina que roda de x tempos