G-campos / kinvo-back-end-test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logo Kinvo

Teste para candidatos à vaga de Desenvolvedor C#

Problema:

  • Um determinado produto financeiro recolhe imposto de renda apenas quando o cliente faz o seu resgate.
  • O Produto pode ter diversas aplicações e resgates, no decorrer do tempo.
  • O cálculo do IR segue a seguinte lógica abaixo:
    • Até 1 ano de aplicação: 22,5% sobre o lucro;
    • De 1 a 2 anos de aplicação: 18,5% sobre o lucro;
    • Acima de 2 anos de aplicação: 15% sobre o lucro;
  • A aplicação não pode ser igual ou menor que zero.
  • A data de resgate não pode ser menor que a data de aplicação.

Após terminar seu teste submeta um pull request e aguarde seu feedback.

Instruções:

  1. Criar um projeto de classes chamado “Aliquota.Domain”;
  2. Criar um projeto de testes chamado “Aliquota.Domain.Test”
  3. Modelar a(s) entidade(s) que resolvem o problema citado;
  4. Mapear as entidades no Entity Framework Core;
  5. Criar um projeto de frontend para permitir a persistência de dados (console, webapp, etc.);
  6. Neste mesmo projeto, criar uma consulta que retorne todas as aplicações e resgates do Produto;
  7. Testar a(s) entidade(s) de forma que garantam as regras de negócio;
  8. Utilizar os conceitos de DDD, OO, POCO e SOLID que você julgar necessário;
  9. Use inglês ou português no seu código. Como achar melhor. Isso não será critério de avaliação.

Pré-requisitos:

  • Utilizar C# e framework .NET 5;

  • Utilizar xUnit para os testes;

  • O projeto deve compilar;

  • Os testes devem rodar pelo Test Explorer do VS e via console (dotnet test);

  • Importante: Usamos o mesmo teste para todos os níveis de desenvolvedor, junior, pleno ou senior, mas procuramos adequar nossa exigência na avaliação com cada um desses níveis sem, por exemplo, exigir excelência de quem está começando :-)

Submissão

Para iniciar o teste, faça um fork deste repositório, crie uma branch com o seu nome e depois envie-nos o pull request. Se você apenas clonar o repositório não vai conseguir fazer push e depois vai ser mais complicado fazer o pull request.

Sucesso!

About