Sobre o Curso

Seja bem vindo(a) ao curso API Rest em NodeJS aplicando testes (TDD) desde o início.

Nesse curso vamos, inicialmente, aprender a montar o nosso ambiente de desenvolvimento, configurar o VSCode, e trabalhar com o lint para garantir a padronização dos nossos códigos. Em seguida, apresentarei o básico do Jest para criarmos os nossos testes... a partir daí vamos criar um teste e desenvolver a nossa aplicação até o teste passar. E assim será ao longo do curso, um teste de cada vez, uma funcionalidade de cada vez, evoluindo sempre com segurança, pois configuraremos nossos testes de tal forma que toda a API será testada sempre que você salvar algum arquivo. Caso algo deixe de funcionar, com um simples Ctrl+Z será possível retornar à normalidade de antes.

Durante o curso, iremos criar a API de um gerenciador financeiro onde, no lado dos testes, apresentarei diversos recursos do Jest para fazer assertivas e estruturar nossos testes. Já no lado do desenvolvimento, trabalharemos com várias bibliotecas famosas como o Express para criar o nosso servidor, o Passport e JWT para autenticação, Knex e Postgres para migração e consultas ao banco de dados, além de outras.

Importante ressaltar que os testes não serão a nível unitário, faremos todas as verificações diretamente nos serviços. O que fará o teste mais real, pois o fluxo passará desde a chamada da URL, passando pelo roteamento, regras de negócio e banco de dados. Porém trará dificuldades extras como a necessidade de possuir o ambiente sempre atualizado e a necessidade de gerenciar a massa de dados necessários para os testes, isso também será abordado no curso.

Abraços e nos vemos na próxima aula, até lá!

Sobre o Autor

Wagner Costa possui graduação em Ciências da Computação, Mestrado na área de previsão de séries temporais com Redes Neurais, ambas pela Universidade Estadual do Ceará (UECE). Trabalha com JAVA há mais de 10 anos, especificamente com testes há quase 9 anos. Também trabalha com desenvolvimento em aplicações Web, sempre com testes lhe dando suporte.

Conteúdo Programático

Capítulo 1. Introdução

Apresentação 06:33

Capítulo 2. Ambiente e produtividade com VSCode

Instalando o NodeJS 05:09

Instalando o VSCode 01:58

Executando o Node 07:45

Themes 08:06

Fonts 05:12

Emmet 14:27

Atalhos 16:05

Snippets 09:00

Bracket Pair Colorizer 05:07

vscode-icons 01:41

gitlens 09:20

TODO Tree 07:58

Lint 26:37

Capítulo 3. Iniciando a API

Devo criar o projeto     Visualizar Logado 08:56

Devo conhecer o básico das assertivas do Jest     18:15

Deve responder na porta 3001 23:07

Deve responder na raiz 09:44

Devo trabalhar no modo seguro 07:20

Capítulo 4. /users

Deve listar os usuários 06:46

Deve inserir usuário com sucesso 09:28

Devo organizar os arquivos 06:28

Devo criar arquivo de rotas 07:58

Devo instalar o postgres 05:03

Devo criar estrutura ta tabela de usuários 12:12

Devo refatorar para usar o banco de dados 17:32

Devo logar as consultas 09:25

Devo separar camada de serviço 04:31

Não deve inserir usuário sem nome 06:58

Não deve inserir usuário sem email 03:43

Não deve inserir usuário sem senha 05:47

Não deve inserir usuário com email já existente 08:34

Capítulo 5. /accounts

Devo criar estrutura da tabela de contas 06:40

Deve inserir uma conta com sucesso 16:55

Deve listar todas as contas 08:33

Deve retornar um conta por ID 16:34

Deve alterar uma conta 08:12

Deve remover uma conta 06:06

Não deve inserir uma conta sem nome 10:50

Devo gerenciar os erros 08:21

Devo entender os middlewares do express 14:37

Devo gerenciar os erros de uma forma genérica 07:48

Capítulo 6. /auth

Deve armazenar senha criptografada 14:51

Deve receber token ao logar 14:37

Não deve autenticar usuário com senha errada 06:36

Não deve acessar uma rota protegida sem token 14:42

Deve criar o usuário via signup 05:51

Deve enviar token nos testes 07:23

Capítulo 7. /accounts #2

Devo desacoplar o meu roteamento 24:11

Deve listar apenas as contas do usuário 17:20

Não deve inserir uma conta com nome duplicado para o mesmo... 06:18

Não deve retornar uma conta de outro usuário 06:29

Não deve alterar ou remover a conta de outro usuário 09:40

Capítulo 8. /transactions

Devo criar estrutura da tabela de transações 05:30

Deve listar apenas as transações do usuário 25:38

Devo criar snippets customizados 12:25

Deve inserir uma transação com sucesso 05:23

Deve retornar uma transação por ID 10:26

Deve alterar uma transação 04:47

Deve remover uma transação 03:01

Não deve manipular transação de outro usuário 06:10

Deve ajustar o sinal das transações 05:44

Deve validar inserção da transação 06:42

Devo aprender a reusar código 12:54

Não deve remover uma conta com transação 06:21

Devo analisar o desempenho dos testes 12:52

Capítulo 9. /transfers

Devo criar estrutura da tabela de transferências 14:13

Devo configurar massa externa 21:16

Deve listar apenas as transferências do usuário 19:25

Deve inserir uma transferência com sucesso 17:07

Ao salvar uma transferência válida... 11:28

Ao tentar salvar uma transferência inválida... 18:29

Devo retornar uma transferência por ID 04:05

Ao alterar uma transferência válida... 08:27

Ao tentar alterar uma transferência inválida... 03:58

Devo fazer validação via middleware 04:31

Ao remover uma transferência... 11:48

Não deve permitir manipular recursos de outro usuário 04:34

Capítulo 10. /balance

Deve preparar a massa do saldo 05:33

Ao calcular o saldo do usuário... 29:44

Deve calcular o saldo 17:29

Devo resolver problemas 16:08

Capítulo 11. Cobertura

Devo me preocupar com cobertura? 12:06

Devo adicionar métricas de cobertura nos testes 05:34

Devo aumentar a confiança dos meus commits 05:43

Capítulo 12. Produção

Devo criar o ambiente de produção 17:58

Devo logar os eventos 11:17

Devo manter o servidor no ar 03:56

Devo acessar a partir do browser 05:10

Capítulo 13. Encerramento

Devo me despedir :( 00:51