Skip to content

lva98/Ilia-Technical-Test

Repository files navigation

Ília Technical Test

O teste técnico da Ília consistiu no desenvolvimento de um servidor http de gerenciamento de cartão ponto. Basicamente há duas rotas /v1/folhas-de-ponto (GET) e /v1/batidas (POST), são responsáveis, respectivamente, por gerar relatório mensal do cartão ponto e criar uma nova batida. Embora seja um sistema simples, busquei utilizar arquitetura limpa para que o código seja de fácil compreensão e escalável, permitindo o aumento de sua complexidade. A pasta dominio é onde estão todas as regras de negócio, enquanto que a infra é parte específica para servidor web e persistência. Para simplificar o projeto, a persistencia é feita de forma local infra/relogio-em-memoria.repositorio.ts, entretanto, pode ser facilmente alterada para utilizar banco de dados. Já para o servidor web foi utilizado framework NestJS.

Disclaimer

Programei todo o projeto em português para seguir o padrão que foi solicitado na documentação da API.

Como executar o projeto

  1. git clone https://github.com/lva98/Ilia-Technical-Test
  2. cd Ilia-Technical-Test
  3. docker build -t ilia-technical-test .
  4. docker run -p 3000:3000 --name ilia-technical-test -it ilia-technical-test

Como executar os testes

  1. Para teste de integração execute docker exec -it ilia-technical-test pnpm test:e2e
  2. Para teste unitário execute docker exec -it ilia-technical-test pnpm test

Testes

Testes unitários

Ao utilizar a arquitetura limpa houve um desacoplamento das regras de negócio, dessa forma, propiciando a criação de testes unitários no domínio da aplicação. Basicamente, os testes unitários consistem em validar as regras de negócio implementadas nos casos de uso bater-ponto.caso-de-uso e gerar-folha-ponto.caso-de-uso. Além disso, alguns testes unitários foram criados para validar relogio-em-memoria.repositorio que está na camada de infraestrutura.

Testes implementados para validar bater-ponto.caso-de-uso

  1. Disparar erro ao não informar entrada
  2. Disparar erro ao informar entrada inválida
  3. Não deve cadastrar horário sábado ou domingo
  4. Não deve permitir cadastrar o mesmo horário
  5. Não deve haver mais que 4 pontos cadastros por dia
  6. Disparar erro ao tentar cadastrar menos que uma 1 de intervalo de almoço
  7. Deve permitir cadastrar 1 hora de almoço

Testes implementados para validar gerar-folha-ponto.caso-de-uso

  1. Deve calcular corretamente o relatório com horas excendentes
  2. Deve calcular corretamente o relatório com horas devidas

Testes implementados para validar relogio-em-memoria.repositorio

  1. Deve poder cadastrar 4 pontos em ordem
  2. Deve poder cadastrar 4 pontos fora de ordem e ordená-los
  3. Deve retornar uma lista vazia quando não é cadastrado ponto
  4. Deve retornar a lista de pontos cadastrada no dia especificado

Testes de Integração

Os testes de integração consistiram em subir o servidor e validar o funcionamento das rotas. Sua implementação pode ser encontrada em test/epp.e2e-spec.ts. Basicamente são testadas as duas rotas disponíveis no servidor web.

  1. /v1/batidas (POST), cria uma nova batida, assim verificando se a rota está em funcionamento como o esperado
  2. /v1/folhas-de-ponto (GET), busca uma folha de ponto e verifica se a rota respondeu corretamente os valores

Documentação API

Esse projeto seguiu a risca a documentação da API solicitada, assim, toda informação necessária estará descrita no arquivo api.yaml que pode ser aberto no Swager Editor.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published