Este repositório é um fork do projeto digitalinnovationone/trilha-net-api-desafio que foi apresentado no módulo Programação De APIs Com Banco de Dados, adaptado especificamente para a mentoria A Jornada do GitHub Actions: Descubra o Caminho para a Qualidade de Código. Esta sessão de mentoria está agendada para o dia 6 de Maio de 2024, e tem como objetivo explorar práticas avançadas de CI/CD utilizando o GitHub Actions.
É assumido como premissa que ao assistir a Live vocês já tenham completado os módulos:
- Programação De APIs Com Banco de Dados
- Trabalhando com Desenvolvimento Orientado a Testes
Para assegurar que o repositório esteja plenamente operacional para nossa demonstração, implementamos a seguinte alteração crítica:
- Atualização do Entity Framework: Para simplificar a execução e tornar o ambiente de demonstração mais acessível, modificamos a configuração do Entity Framework para utilizar um banco de dados InMemory, eliminando a necessidade de um SQL Server externo;
- Segregação Pastas: Para que seja possível isolar o código do projeto de testes do código do projeto de API foi necessário mover todo o código original para uma pasta chamada
src
;
Agradeço seu interesse e apoio à minha mentoria. Espero que as modificações e o conteúdo demonstrado possam servir como um recurso valioso para sua jornada de aprendizado em desenvolvimento de software e automação de CI/CD.
Para este desafio, você precisará usar seus conhecimentos adquiridos no módulo de API e Entity Framework, da trilha .NET da DIO.
Você precisa construir um sistema gerenciador de tarefas, onde você poderá cadastrar uma lista de tarefas que permitirá organizar melhor a sua rotina.
Essa lista de tarefas precisa ter um CRUD, ou seja, deverá permitir a você obter os registros, criar, salvar e deletar esses registros.
A sua aplicação deverá ser do tipo Web API ou MVC, fique a vontade para implementar a solução que achar mais adequado.
A sua classe principal, a classe de tarefa, deve ser a seguinte:
Não se esqueça de gerar a sua migration para atualização no banco de dados.
É esperado que você crie o seus métodos conforme a seguir:
Swagger
Endpoints
Verbo | Endpoint | Parâmetro | Body |
---|---|---|---|
GET | /Tarefa/{id} | id | N/A |
PUT | /Tarefa/{id} | id | Schema Tarefa |
DELETE | /Tarefa/{id} | id | N/A |
GET | /Tarefa/ObterTodos | N/A | N/A |
GET | /Tarefa/ObterPorTitulo | titulo | N/A |
GET | /Tarefa/ObterPorData | data | N/A |
GET | /Tarefa/ObterPorStatus | status | N/A |
POST | /Tarefa | N/A | Schema Tarefa |
Esse é o schema (model) de Tarefa, utilizado para passar para os métodos que exigirem
{
"id": 0,
"titulo": "string",
"descricao": "string",
"data": "2022-06-08T01:31:07.056Z",
"status": "Pendente"
}
O código está pela metade, e você deverá dar continuidade obedecendo as regras descritas acima, para que no final, tenhamos um programa funcional. Procure pela palavra comentada "TODO" no código, em seguida, implemente conforme as regras acima.
Para executar essa aplicação no terminal basta executar o comando abaixo:
dotnet run TrilhaApiDesafio.csproj
Para testar esta aplicação via terminal basta executar os comandos abaixo:
dotnet test /p:CollectCoverage=true /p:CoverletOutput=../coverage/ /p:CoverletOutputFormat=\"cobertura,json,opencover\"
reportgenerator -reports:"./coverage/coverage.cobertura.xml" -targetdir:"./coverage/report" -reporttypes:Html -classfilters:"-*.Migrations.*"
Obs.: O relatório com a cobertura de código será gerada em coverage/report/index.htm