Coder Social home page Coder Social logo

crud-superuser's Introduction

Express: CRUD de usuário + permissão de administrador

1. Visão Geral

Visão geral do projeto, um pouco das tecnologias usadas.

  • JavaScript
  • Express
  • NodeJS
  • Nodemon
  • Sucrase
  • Uuid
  • PostegresSQL
  • Jsonwebtoken
  • Bcryptjs
  • Dotenv

Para inciar este projeto, é necessário instalar as dependências, que serão utilizadas nos testes. Portanto utilize o comando abaixo para instalar tais dependências:

yarn install

Atenção: é necessário utilizar o yarn pois esse projeto foi iniciado com esse gerenciador de pacotes.

Para verificar se já possui o gerenciador yarn instalado utilize o seguinte comando:

yarn --version

Caso não possua o yarn instalado, utilize o comando abaixo para instalar globalmente na sua máquina:

npm install --global yarn

Sobre os testes

Essa aplicação possui testes, que serão utilizados para validar, se todas as regras de negócio foram aplicadas de maneira correta.

Os testes estão localizados em src/test/user.spec.js.

De modo algum altere esse arquivo. Isso poderá comprometer a integridade dos testes.

Além disso, é importante não alterar o arquivo .babelrc. (não se preocupe em saber para que serve isso por enquanto).

E também não altere o script de test localizado no package.json. Isso será utilizado para rodar os testes.

Rodando os testes

Para rodar os testes é necessário que no seu terminal, você esteja dentro do diretório do projeto.

Estando no terminal e dentro do caminho correto, você deverá utilizar o seguinte comando:

yarn test

caso seja necessário um log mais completo, utilize o comando:

yarn test --all

Após isso aparecerá um log no seu terminal, contendo as informações da execução do teste.

Observação: O teste pode demorar alguns segundos para ser finalizado.

O seu objetivo é que a mensagem nesse log se pareça com essa:

yarn run v1.22.18
$ jest --all
  console.log
    Server is running on http://localhost:3000

      at Server.log (src/app.js:10:32)

 PASS  src/test/user.spec.js
  Testing success cases in the routes
    √ Testando criação de usuário com um corpo correto (142 ms)                                                                                                    
    √ Testando criação de usuário com e-mail já utilizado (4 ms)                                                                                                   
    √ Testando login válido (71 ms)                                                                                                                                
    √ Testando login inválido (68 ms)                                                                                                                              
    √ Testando listagem de usuários (73 ms)                                                                                                                        
    √ Testando listagem de usuários sem token (3 ms)                                                                                                               
    √ Testando listagem de usuários sem autorização (144 ms)                                                                                                       
    √ Testando listagem do perfil de usuário (73 ms)                                                                                                               
    √ Testando listagem do perfil de usuário (3 ms)                                                                                                                
    √ Testando atualização sem token (73 ms)                                                                                                                       
    √ Testando atualização do próprio usuário sem permissão de ADM (75 ms)                                                                                         
    √ Testando atualização de outro usuário sem permissão de ADM (141 ms)                                                                                          
    √ Testando atualização de qualquer usuário com permissão de ADM (134 ms)                                                                                       
    √ Testando deleção sem token (70 ms)                                                                                                                           
    √ Testando deleção de outro usuário sem permissão de ADM (143 ms)                                                                                              
    √ Testando deleção de outro usuário com permissão de ADM (137 ms)                                                                                              
    √ Testando deleção do próprio usuário (75 ms)                                                                                                                  
                                                                                                                                                                   
Test Suites: 1 passed, 1 total                                                                                                                                     
Tests:       17 passed, 17 total                                                                                                                                   
Snapshots:   0 total
Time:        1.957 s, estimated 3 s
Ran all test suites.
Jest did not exit one second after the test run has completed.

This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue.

Entendendo o log

Aqui vão algumas explicações sobre cada componente da saída do seu teste:

  • PASS src/test/user.spec.js: Essa linha mostra que todos os testes, contidos no arquivo especificado, foram executados com êxito;
  • Testing success cases in the routes: aqui é dado uma lista com parte ou todos os testes executados;
    √ Testando criação de usuário com um corpo correto (151 ms)                                                                                                    
    √ Testando criação de usuário com e-mail já utilizado (7 ms)                                                                                                   
    √ Testando login válido (76 ms)                                                                                                                                
    √ Testando login inválido (77 ms)                                                                                                                              
    √ Testando listagem de usuários (91 ms)                                                                                                                        
    √ Testando listagem de usuários sem token (2 ms)                                                                                                               
    √ Testando listagem de usuários sem autorização (147 ms)
    
  • Test Suites: 1 passed, 1 total: aqui estão a quantidade de blocos de testes executados e quantos desses blocos passaram ou falharam nos testes;
  • Tests: 17 passed, 17: nessa linha estão a quantidade total de testes executados, assim como quantos falharam ou tiveram sucesso;

Caso o seu teste falhe, você reberá FAIL src/test/user.spec.js ao invés de PASS src/test/user.spec.js.

Para um feedback mais preciso olhe para a lista de testes executados busque pelo erro específico.

O teste que falhou irá aparecer com um x ao invés de um .

E logo abaixo da lista de testes executados irá aparecer uma ou mais mensagens, com o que era esperado (Expected) e com o que foi recebido de fato (Received).

 FAIL  src/test/user.spec.js
  Testing success cases in the routes
    √ Testando criação de usuário com um corpo correto (150 ms)                                                                                                    
    √ Testando criação de usuário com e-mail já utilizado (4 ms)                                                                                                   
    √ Testando login válido (4 ms)                                                                                                                                 
    × Testando login inválido (4 ms)                                                                                                                               
    √ Testando listagem de usuários (6 ms)                                                                                                                         
    √ Testando listagem de usuários sem token (3 ms)                                                                                                               
    √ Testando listagem de usuários sem autorização (80 ms)                                                                                                        
                                                                                                                                                                   
  ● Testing success cases in the routes › Testando login inválido                                                                                                  
                                                                                                                                                                   
    expect(received).toBe(expected) // Object.is equality

    Expected: 401
    Received: 200

crud-superuser's People

Contributors

victorhugo110199 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.