/liveecommerce-p-tst

liveecommerce-php-test

Primary LanguagePHPMIT LicenseMIT

Live eCommerce

TravisCI Code Coverage

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.

Como fazer?

  1. Fazer um fork deste repositório
  2. Vincular* sua conta do GitHub ao TravisCI, para build automatizada, com checagem de sintaxe e testes unitários (Tutorial)
  3. Vincular sua conta do GitHub ao CodeCov, para validação de cobertura de teste do código
  4. Adicionar a variável de ambiente do CodeCov nas configurações do TravisCI (CODECOV_TOKEN="<codigo>")
  5. 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
  6. Realizar as alterações necessárias pra finalizar as tarefas e requisitos do teste
  7. Enviar um email com o link do seu repositório fork, seu CV e os dados de contato para jobs@liveecommerce.com.br

* 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.

Tarefas

Para passar neste teste, você deverá realizar algumas tarefas:

  1. Corrigir um erro de código, inserido voluntariamente, que está impedindo o conclusão dos testes unitários.
  1. 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.
  1. Adicionar tempo de expiração para os registros, nas duas coleções (FileCollection e MemoryCollection).
    O tempo de expiração será fornecido junto à chamada do método set, 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.

Requisitos

  • 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.

Projeto

Dependências

Você precisará de:

  • PHP7.2+
  • XDebug
  • Composer

Instalação

Para instalar as dependências do projeto, utilize o comando, na raiz do projeto:

$ composer install

Validações

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