Este repositório contém uma implementação básica de coleções. Coleções armazenam dados pelo esquema de chave-valor, onde um valor é representado por uma chave.
Este é um teste para a vaga de desenvolvedor de PHP, na Live eCommerce. Assumimos que se você souber resolver os problemas deste teste, estará apto para assumir responsabilidades maiores.
- Fazer um fork deste repositório
- Vincular* sua conta do GitHub ao TravisCI, para build automatizada, com checagem de sintaxe e testes unitários (Tutorial)
- Vincular sua conta do GitHub ao CodeCov, para validação de cobertura de teste do código
- Adicionar a variável de ambiente do CodeCov nas configurações do TravisCI (CODECOV_TOKEN="<codigo>")
- Alterar os links do TravisCI e do CodeCov, que estão no final deste arquivo README, para refletir a url do seu repositório fork
- Realizar as alterações necessárias pra finalizar as tarefas e requisitos do teste
- Enviar um email com o link do seu repositório fork, seu CV e os dados de contato para [email protected]
* Não é necessário configurar o TravisCI, uma vez que o arquivo de configuração já está na raiz do projeto. Só é necessário vincular a conta e habilitar as builds para o seu repositório.
Para passar neste teste, você deverá realizar algumas tarefas:
- Corrigir um erro de código, inserido voluntariamente, que está impedindo o conclusão dos testes unitários.
- Adicionar uma nova coleção (
FileCollection
), se baseando em leitura e escrita de arquivos, seguindo os moldes da coleção de memória (MemoryCollection
).
A coleção deverá utilizar um único arquivo para leitura e escrita, que será fornecido durante a construção do objeto.
Só há a necessidade de executar a leitura geral do arquivo uma vez por execução do PHP.
A ideia é que haja uma espécie de "persistência" da coleção, em disco.
- Adicionar tempo de expiração para os registros, nas duas coleções (
FileCollection
eMemoryCollection
).
O tempo de expiração será fornecido junto à chamada do métodoset
, mas será opcional. Caso não haja o preenchimento, a classe assumirá um valor padrão.
Se houver a tentativa de obter o valor de um índice expirado, nada deverá ser retornado. O índice deverá ser considerado inexistente, nesta situação.
- Todo o código criado precisa conter teste unitário;
- A padronização de sintaxe deve ser PSR-2 (https://www.php-fig.org/psr/psr-2/);
- O código precisa estar devidamente documentado, seguindo o padrão dos arquivos atuais;
- A cobertura de código (code-coverage) precisa ser exatamente igual a 100%, ou seja, todo o código do projeto precisa estar coberto por testes;
- Todo código e documentação deve estar em inglês.
Você precisará de:
- PHP7.2+
- XDebug
- Composer
Para instalar as dependências do projeto, utilize o comando, na raiz do projeto:
$ composer install
Para validar a sintaxe do código, utilize o comando, na raiz do projeto:
$ composer check
Para executar os testes, utilize o comando, na raiz do projeto:
$ composer test