Skip to content

Este repositório diz a respeito da resolução de um desafio back end de nível júnior

Notifications You must be signed in to change notification settings

Xcode-sketcher/Desafio-Back-End

Repository files navigation

Desafio API - Sistema de Transações

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.

Funcionalidades

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

Tecnologias Utilizadas

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

Estrutura do Projeto

  • Controllers/: Contém o TransacaoController com os endpoints da API.
  • Services/: Lógica de negócio, incluindo TransacaoService e ITransacaoService.
  • 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).

Endpoints da API

POST /api/transacao

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.

GET /api/transacao/estatistica

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.

DELETE /api/transacao

Limpa todas as transações.

  • Status: 200 OK.

Validações

  • Valor: Deve ser positivo (maior que 0).
  • Data/Hora: Deve ser no passado ou presente (não futura).
  • Null: Não aceita valores nulos.

Como Executar

  1. Pré-requisitos:

    • .NET 9 SDK instalado.
  2. Clonar e Executar:

    git clone <url-do-repositorio>
    cd dotnet
    dotnet build
    dotnet run
  3. Acessar a API:

    • Base URL: http://localhost:5015 ou https://localhost:7179 (ou configure em launchSettings.json).
    • Use ferramentas como Postman ou curl para testar os endpoints.

Testes

Executar Testes

dotnet test

Tipos de Testes

  • Unitários: Testam a lógica do serviço (TransacaoService) isoladamente.
  • Integração: Testam os endpoints completos da API usando WebApplicationFactory.

Cobertura

  • Criação de transações válidas e inválidas.
  • Exceções (ArgumentNullException, ArgumentOutOfRangeException, InvalidDataException).
  • Estatísticas e limpeza.

About

Este repositório diz a respeito da resolução de um desafio back end de nível júnior

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published