Template para iniciar o desafio
Sobre o desafio | Rotas da aplicação | Testes da aplicação | Execute o projeto | Licença
Nesse desafio, foi criado uma aplicação para armazenar transações financeiras de entrada e saída, que deve permitir o cadastro e a listagem dessas transações.
POST /transactions: A rota deve recebertitle,valueetypedentro do corpo da requisição, sendotypeo tipo da transação, que deve serincomepara entradas (depósitos) eoutcomepara saídas (retiradas). Ao cadastrar uma nova transação, ela deve ser armazenada dentro de um objeto com o seguinte formato :
{
"id": "uuid",
"title": "Salário",
"value": 3000,
"type": "income"
}GET /transactions: Essa rota deve retornar uma listagem com todas as transações que você cadastrou até agora, junto com o valor de soma de entradas, retiradas e total de crédito. Essa rota deve retornar um objeto com o formato a seguir:
{
"transactions": [
{
"id": "uuid",
"title": "Salário",
"value": 4000,
"type": "income"
},
{
"id": "uuid",
"title": "Freela",
"value": 2000,
"type": "income"
},
{
"id": "uuid",
"title": "Pagamento da fatura",
"value": 4000,
"type": "outcome"
},
{
"id": "uuid",
"title": "Cadeira Gamer",
"value": 1200,
"type": "outcome"
}
],
"balance": {
"income": 6000,
"outcome": 5200,
"total": 800
}
}Dica: Dentro de balance, o income é a soma de todos os valores das transações com type income. O outcome é a soma de todos os valores das transações com type outcome, e o total é o valor de income - outcome.
Dica 2: Para fazer a soma dos valores, você pode usar a função reduce para agrupar as transações pela propriedade type, assim você irá conseguir somar todos os valores com facilidade e obter o retorno do balance.
-
should be able to create a new transaction: Para que esse teste passe, a aplicação deve permitir que uma transação seja criada, e retorne um json com a transação criada. -
should be able to list the transactions: Para que esse teste passe, a aplicação deve permitir que seja retornado um objeto contendo todas as transações junto ao balanço de income, outcome e total das transações que foram criadas até o momento. -
should not be able to create outcome transaction without a valid balance: Para que esse teste passe, a aplicação não deve permitir que uma transação do tipooutcomeextrapole o valor total que o usuário tem em caixa, retornando uma resposta com código HTTP 400 e uma mensagem de erro no seguinte formato:{ error: string }
# Clone este repositório
$ git clone https://github.com/JonasCastro/
.git
# Acesse a pasta do projeto no terminal/cmd
$ cd api-GoFinances
# Instale as dependências
$ yarn
# Execute a aplicação em modo de desenvolvimento
$ yarn dev:server
# Para executar os testes da aplicação
$ yarn test
Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Feito com 💙 by Jonas Castro 👋 Stay in touch!
- Desafio feito com 💜 by Rocketseat 👋 Entre na nossa comunidade!
