mnzsss / portfolio-nodejs

🎯Challenge about Node.Js, create CRUD of Repositories List - Bootcamp GoStack

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GoStack

Desafio: Conceitos do Node.js

“Não espere para plantar, apenas tenha paciência para colher”!

GitHub language count Made by MNZS

🚀 Sobre o desafio

Nesse desafio, Foi criado uma aplicacão para fixar tudo o que foi aprendindo sobre Node.JS!

Essa será uma aplicação para armazenar repositórios do seu portfólio, que irá permitir a criação, listagem, atualização e remoção dos repositórios, e além disso permitir que os repositórios possam receber "likes".

Iniciando

Navegue até a pasta criada e abra no Visual Studio Code, e execute o comando yarn no seu terminal para instalar todas as dependências.

Rotas da aplicação

  • POST /repositories: A rota deve receber title, url e techs dentro do corpo da requisição, sendo a URL o link para o github desse repositório. Ao cadastrar um novo projeto, ele deve ser armazenado dentro de um objeto no seguinte formato: { id: "uuid", title: 'Desafio Node.js', url: 'http://github.com/...', techs: ["Node.js", "..."], likes: 0 };

  • GET /repositories: Rota que lista todos os repositórios;

  • PUT /repositories/:id: A rota deve altera apenas o título, a url e as techs do repositório que possua o id igual ao id presente nos parâmetros da rota;

  • DELETE /repositories/:id: A rota deleta um repositório com o id presente nos parâmetros da rota;

  • POST /repositories/:id/like: A rota aumenta o número de likes do repositório específico escolhido através do id presente nos parâmetros da rota, a cada chamada dessa rota, o número de likes aumenta em 1;

Específicação dos testes

Em cada teste, tem uma breve descrição no que sua aplicação deve cumprir para que o teste passe.

Para esse desafio temos os seguintes testes:

  • should be able to create a new repository: Para que esse teste passe, sua aplicação deve permitir que um repositório seja criado, e retorne um json com o projeto criado.

  • should be able to list the repositories: Para que esse teste passe, sua aplicação deve permitir que seja retornado um array com todos os repositórios que foram criados até o momento.

  • should be able to update repository: Para que esse teste passe, sua aplicação deve permitir que sejam alterados apenas os campos url, title e techs.

  • should not be able to update a repository that does not exist: Para que esse teste passe, você deve validar na sua rota de update se o id do repositório enviado pela url existe ou não. Caso não exista, retornar um erro com status 400.

  • should not be able to update repository likes manually: Para que esse teste passe, você não deve permitir que sua rota de update altere diretamente os likes desse repositório, mantendo o mesmo número de likes que o repositório já possuia antes da atualização. Isso porque o único lugar que deve atualizar essa informação é a rota de responsável por aumentar o número de likes.

  • should be able to delete the repository: Para que esse teste passe, você deve permitir que a sua rota de delete exclua um projeto, e ao fazer a exclusão, ele retorne uma resposta vazia, com status 204.

  • should not be able to delete a repository that does not exist: Para que esse teste passe, você deve validar na sua rota de delete se o id do repositório enviado pela url existe ou não. Caso não exista, retornar um erro com status 400.

  • should be able to give a like to the repository: Para que esse teste passe, sua aplicação deve permitir que um repositório com o id informado possa receber likes. O valor de likes deve ser incrementado em 1 a cada requisição, e como resultado, retornar um json contendo o repositório com o número de likes atualizado.

  • should not be able to like a repository that does not exist: Para que esse teste passe, você deve validar na sua rota de like se o id do repositório enviado pela url existe ou não. Caso não exista, retornar um erro com status 400.


Feito com 💜 by Gabriel Menezes 👋

About

🎯Challenge about Node.Js, create CRUD of Repositories List - Bootcamp GoStack


Languages

Language:JavaScript 100.0%