rodrigoftw / desafio05-fundamentos-nodejs

Desafio 05 - Fundamentos Node.js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Desafio 05 - Fundamentos Node.js

GoStack

Desafio 05: Fundamentos do Node.js

šŸš€ Sobre o desafio

Nesse desafio, deve-se criar uma aplicaĆ§Ć£o para continuar treinando o que aprendido atĆ© agora no Node.js junto ao TypeScript, utilizando o conceito de models, repositories e services.

Essa serĆ” uma aplicaĆ§Ć£o que deve armazenar transaƧƵes financeiras de entrada e saĆ­da, que deve permitir o cadastro e a listagem dessas transaƧƵes.

Rotas da aplicaĆ§Ć£o

Deve-se verificar os arquivos da pasta src e completar onde nĆ£o possui cĆ³digo com o cĆ³digo para atingir os objetivos de cada rota.

  • POST /transactions: A rota deve receber title, value e type dentro do corpo da requisiĆ§Ć£o, sendo type o tipo da transaĆ§Ć£o, que deve ser income para entradas (depĆ³sitos) e outcome para saidas (retiradas). Ao cadastrar uma nova transaĆ§Ć£o, ela deve ser armazenada dentro de um objeto com o formato como o seguinte:
{
  "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
  }
}

EspecĆ­ficaĆ§Ć£o dos testes

Em cada teste, hĆ” uma breve descriĆ§Ć£o no que a aplicaĆ§Ć£o deve cumprir para que o teste passe.

Para esse desafio existem os seguintes testes:

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

  • 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 tipo outcome extrapole 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 }

About

Desafio 05 - Fundamentos Node.js


Languages

Language:JavaScript 51.0%Language:TypeScript 49.0%