Este projeto é uma API REST desenvolvida em .NET 9 para gerenciar transações financeiras, como parte de um desafio backend. A API permite criar transações, consultar estatísticas em tempo real e limpar o histórico de transações.
- Criar Transação: Adiciona uma nova transação com valor e data/hora.
- Consultar Estatísticas: Retorna estatísticas das transações dos últimos 60 segundos (contagem, soma, média, mínimo, máximo).
- Limpar Transações: Remove todas as transações armazenadas.
- .NET 9: Framework principal.
- ASP.NET Core: Para construção da API REST.
- xUnit: Para testes unitários e de integração.
- Moq: Para mocking em testes unitários.
- Microsoft.AspNetCore.Mvc.Testing: Para testes de integração.
Controllers/: Contém oTransacaoControllercom os endpoints da API.Services/: Lógica de negócio, incluindoTransacaoServiceeITransacaoService.DTOs/: Objetos de transferência de dados (TransacaoRequest,EstatisticaResponse).Models/: Modelos de domínio (Transacao).tests/: Testes unitários (TestesUnitarios.cs) e de integração (TestesIntegracao.cs).
Cria uma nova transação.
- Corpo da Requisição (JSON):
{ "valor": 123.45, "dataHora": "2023-10-01T12:00:00Z" } - Respostas:
201 Created: Transação criada com sucesso.422 Unprocessable Entity: Dados inválidos (valor negativo, data futura, ou null).400 Bad Request: Modelo inválido.
Retorna estatísticas das transações dos últimos 60 segundos.
- Resposta (JSON):
{ "count": 10, "sum": 1234.56, "avg": 123.46, "min": 10.00, "max": 500.00 } - Status:
200 OK.
Limpa todas as transações.
- Status:
200 OK.
- Valor: Deve ser positivo (maior que 0).
- Data/Hora: Deve ser no passado ou presente (não futura).
- Null: Não aceita valores nulos.
-
Pré-requisitos:
- .NET 9 SDK instalado.
-
Clonar e Executar:
git clone <url-do-repositorio> cd dotnet dotnet build dotnet run
-
Acessar a API:
- Base URL:
http://localhost:5015ouhttps://localhost:7179(ou configure emlaunchSettings.json). - Use ferramentas como Postman ou curl para testar os endpoints.
- Base URL:
dotnet test- Unitários: Testam a lógica do serviço (
TransacaoService) isoladamente. - Integração: Testam os endpoints completos da API usando
WebApplicationFactory.
- Criação de transações válidas e inválidas.
- Exceções (
ArgumentNullException,ArgumentOutOfRangeException,InvalidDataException). - Estatísticas e limpeza.