Skip to content

Desafio de conceitos de Node.js da GoStack 11, onde resolvi usar typescript pela primeira vez

Notifications You must be signed in to change notification settings

tmpires/conceitos-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoStack

Desafio 02: Conceitos do Node.js

GitHub language count License

Sobre o desafio

Nesse desafio, foi pedido criar uma aplicação para treinar o que aprendemos até agora no Node.js. Porem quis me desafiar mais ainda e decidi faze-lo utilizando typescript também. Esse foi meu primeiro projeto com typescript e tentei aplicar tudo que aprendi sobre ele nas aulas da GoStack 11.

Essa aplicação foi feita para armazenar repositórios do seu portfólio, permitindo a criação, listagem, atualização e remoção deles, e também permitir que os repositórios possam receber "likes".

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 }; Certifique-se que o ID seja um UUID, e de sempre iniciar os likes como 0.

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

  • PUT /repositories/:id: A rota deve alterar 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 deve deletar o repositório com o id presente nos parâmetros da rota;

  • POST /repositories/:id/like: A rota deve aumentar 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 deve ser aumentado em 1;

Específicação dos testes

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.

About

Desafio de conceitos de Node.js da GoStack 11, onde resolvi usar typescript pela primeira vez

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published