- Clone o repositório
[email protected]:lucaseduardolema/blog-api.git.
- Instale as dependências
npm install
- Suba o servidor MySQL (caso rode o projeto fora do Docker), rode o comando para popular o banco
npm run restart:db
- Suba o servidor da Api
npm start
- Consuma os endpoints
- POST
/login - POST
/user - GET
/user - GET
/user/:id - POST
/categories - GET
/categories - POST
/post - GET
/post - GET
/post/:id - PUT
post/:id - DELETE
/post/:id - DELETE
/user/me - GET
/post/search?q=:serarchTerm
🐋 Rodando no Docker vs Localmente
1.26.0 por 1.29.2.
ℹ️ Rode os serviços
nodeedbcom o comandodocker-compose up -d --build.
-
Lembre-se de parar o
mysqlse estiver usando localmente na porta padrão (3306), ou adapte, caso queria fazer uso da aplicação em containers; -
Esses serviços irão inicializar um container chamado
blogs_apie outro chamadoblogs_api_db; -
A partir daqui você pode rodar o container
blogs_apivia CLI ou abri-lo no VS Code;
ℹ️ Use o comando
docker exec -it blogs_api bash.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
ℹ️ Instale as dependências [Caso existam] com
npm install. (Instale dentro do container)
-
⚠️ Atenção: Caso opte por utilizar o Docker, TODOS os comandos disponíveis nopackage.json(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker execcitado acima. -
⚠️ Atenção: O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container. -
⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador. -
✨ Dica: A extensão
Remote - Containers(que estará na seção de extensões recomendadas do VS Code) é indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.
ℹ️ Instale as dependências [Caso existam] com
npm install
-
⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador. -
✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o
nodeinstalado em seu computador. -
✨ Dica: O avaliador espera que a versão do
nodeutilizada seja a 16.
🛠 Execução de testes localmente
ℹ️ IMPORTANTE
-
O teste local deve rodar o script
npm run start:test, que vai iniciar e depois encerrar, em segundo plano outra instância da sua API, na porta3030. Dessa forma, o teste conseguira consumir sua API e validar os requisitos.- Caso seu computador não suporte rodar um servidor extra para os testes, execute um servidor na porta 3000 e rode o script
npm run test:dev, este não vai criar outra instância, mas vai esperar um servidor na porta 3000.
- Caso seu computador não suporte rodar um servidor extra para os testes, execute um servidor na porta 3000 e rode o script
-
Sua API deve estar funcionando minimamente para que o teste comece, dado que ele aguarda o estabelecimento da mesma para começar o teste.
-
Todos os testes vão gerar e consumir um banco de dados próprio com final
*-test, que é gerado através da configuração do arquivosrc/config/config.js. -
Isso vai garantir que durante seu desenvolvimento, o teste não manipule ou derrube sua API na porta padrão (
3000) ou seu banco de dados padrão (final*-dev), isolando os mesmos. -
Caso ocorra algum problema, encerre o teste com
[CTRL] + [C]e utilize o scriptnpm run kill:test
O teste local já é configurado, internamente, com a variável de ambiente NODE_ENV=test para indicar o banco a ser utilizado pelo Sequelize, o que deve resultar na criação de um banco, somente para o teste:
Sem essa variável (modo padrão de desenvolvimento), sua API deve resultar algo como:
ℹ️ Scripts para executar os testes locais:
Vamos usar o Jest para executar os testes, use o comando a seguir para executar todos os testes:
npm testCaso queira executar só um arquivo de test use o seguinte comando, considerado que quer testar o arquivo tests/req07-createPost.test.js:
npm test tests/req07-createPost.test.jsou
npm test req07
Caso queira omitir dados de debug nos testes, utilize a variável de ambiente DEBUG=false, como em DEBUG=false npm test.