A idéia é testar os fundamentos de testing
, aplicando o que foi visto no
JS Expert - Módulo 02
num projeto simples e divertido.
Consumindo a PokeAPI, faça uma API que retorne 3 pokemóns aleatórios para formar seu time inicial numa jornada pokemon.
GET /
Deve ser a rota padrão da aplicação ao tentar acessar qualquer rota inexistente (ex.: /hi
, /hello
), deve retornar uma mensagem sugerindo acessar a rota /team
GET /team
Deve retornar um array com 3 pokemóns aleatórios, contendo seus respectivos name
e moves
, (mostrando apenas um array de strings com os 3 primeiros moves
presentes na API. ex.: ["mega-punch","fire-punch","thunder-punch"]
).
- mocks
- stubs
- spies
- testes end-2-end
- testes unitários
- 100% de code coverage
- TDD e BDD, será que rola? Acho que vale a tentativa!
- Publicar o code coverage no github pages!
- Sinta-se livre pra desenvolver sua solução da melhor maneira possível, a arquitetura recomendada foi pensada para ser um desafio focado em testes e não em arquitetura, teremos um desafio de arquitetura mais pra frente
project
│ README.md
│ .nycrc.json
│ package.json
│
└───src
│ │ app.js
| |
| |___api
| | | index.js
│ │
│ └───repository
│ │ │ teamRepository.js
│ │
│ └───service
│ │ teamService.js
│
└───test
│ └───e2e
│ │ │ api.test.js
│ │
│ └───mocks
│ │ │ valid-team.json
│ │ │ ...
│ │
│ └───unit
│ │ teamRepository.test.js
│ │ teamService.test.js
│
└───coverage
│ │ ...
URLs Úteis ao desafio:
-
Web API
- Deve ter uma rota raiz que retorne 404 ou um hello world.
- Deve ter uma rota de
/team
, onde:- Deve consumir a PokeAPI e selecionar 3 pokemóns aleatórios
- Deve consumir a PokeAPI para obter mais informações sobre os pokemóns escolhidos
- Deve retornar um objeto JSON contendo um array com 3 pokemóns, cada um com seus respectivos
name
do tipo String emoves
do tipo Array de String
-
Testes
- Deve ter testes unitários que cubra todas as funções
- Deve ter testes end-2-end que cubra todas as rotas
- Deve ter relatório de 100% de code coverage
-
package.json
- Troque a versão do node para a sua versão atual (node -v
) e coloque seu nome noAuthor
. -
npm i
- Escolha as bibliotecas de testes e instale elas (como as aulas do modulo 1 são com o CommonJS e as bibliotecaschai
,mocha
,sinon
enyc
, as configuração de coverage já foi feita pensando nelas).
-
Inicialize um repósitório git com um arquivo README.md contendo seu nome, quais tópicos do checklist foram implementados e, caso queira, um breve resumo de cada tópico.
-
Crie o projeto e os testes.
-
Coloque as instruções de como configurar e executar seu projeto e os testes no README.md (não se esqueça do coverage com o
nyc
). -
Envie o link no canal
#desafios-jsexpert
da nossa comunidade no discord.