Introdução
Introdução
Instalação de ferramentas
Repositório do projeto no GITHUB
Conceitos básicos sobre testes automatizados
Objetivos da sessão
Por que testar seu código?
Tipos de testes abordados no curso
Conhecendo a estrutura de um teste e implementando o primeiro teste com java
Assertivas com AssertJ
Desafio da Calculadora
Prática: Testando uma calculadora
O que é TDD (Test Driven Development)
Criando um cadastro de pessoas com TDD
O que é BDD (Behavior Driven Development)
Conhecendo a biblioteca Mockito e o recurso Mock
Outros recursos úteis do Mockito
Novidades do JUnit 5
Módulo de conceitos básicos sobre testes automatizados
Conceitos básicos sobre Rest
Objetivos da sessão
O que é Rest
Verbos HTTP
Modelagem de recursos de uma API RestFul
Como utilizar os códigos de status HTTP
Representação de recursos com JSON (JavaScript Object Notation)
Módulo de conceitos básicos sobre Rest
Iniciando com Spring Boot
Objetivos da sessão
Criando um projeto Spring boot do zero
Básico para criação de uma API Rest na prática com Spring boot parte 1
Básico para criação de uma API Rest na prática com Spring boot parte 2
Projeto Library API: Livros
Apresentando o Projeto e Arquitetura
Criação e importação do projeto na IDE
Testando o Projeto
Apresentando o design da API de livros
Como criar classes de testes para testar Rest Controllers
Aprendendo a desenhar uma requisição utilizando TDD
Controller, DTO e Lombok Project
Refatorando o teste para receber json via requisição
Utilizando a camada de serviço e o recurso mocks
Adicionando o ModelMapper ao projeto
Criando o teste da camada de serviço
Criando a implementação do BookService
Utilizando os recursos Bean Validation e Exception Handler
Lidando com erros de regra de negocio
Testando fluxo de exceções na camada de serviço
Criando nosso primeiro teste de integração com a base de dados
Verificando a existência de um livro pelo ISBN na base de dados
Adicionando nosso código fonte ao GITHUB
Criando a funcionalidade de obter as informações de um livro
Implementando o cenário onde o livro não existe no servidor
Deleção de livros
Atualização de livros
Teste unitário de obter livro por id na camada de serviço
Teste de Integração do método findById
Desafio dos métodos delete e update
Resposta do desafio delete - implementando o teste de deleção
Resposta do desafio update - implementando o teste de atualização
Testes de integração do repository para os métodos save e delete
Criando o design da consulta de livros por parâmetros
Implementando a consulta de livros
Implementando o filtro de livros com Example do spring data
Projeto Library API: Empréstimos
Modelagem da API de empréstimos
Primeiro Teste da API de emprestimos
Implementando o Post de Empréstimos
Lançando erro quando não encontrar o livro para fazer o empréstimo
Utilizando o RestControllerAdvice para tratamento de exceções de nossa API
Implementando validação de livro já emprestado
Enviando o código para o GITHUB através do IntelliJ
Implementando o getBookByIsbn na camada de serviço
Implementando o método de salvar o empréstimo da camada de serviço
Lançando erro ao tentar fazer empréstimo de um livro já emprestado
Teste de integração para verificar a existência de um livro emprestado
Funcionalidade de devolução/retorno de livros
Fazendo a devolução de um empréstimo inexistente
obtendo as informações de um empréstimo por id
implementando a atualização de empréstimos
Pesquisa de Empréstimos
Finalizando a pesquisa de empréstimos
Implementando a busca de empréstimos na camada de serviço
Finalizando os testes de integração de empréstimos
Sub-recursos, Envio de Emails e Agendamento de tarefas com Spring
Objetivos da sessão
Implementação de rota com sub-recurso
Implementando a busca de empréstimos por livro
Agendamento de tarefas com Schedules do Spring
Realizando as alterações para receber o email do customer
Criando consulta de empréstimos atrasados
Implementando o serviço de agendamento de tarefas
Configurando o servidor MailTrap para envio de emails
Implementando o serviço de email
Testando o envio de emails
Publicando as modificações no GITHUB
Documentando a API
Objetivos da sessão
Configurando o Swagger no projeto
Documentando a API com Swagger
Customizando o Swagger UI
Logs, Métricas e Monitoramento da API com Actuator e Spring Boot Admin
Objetivos da sessão
Adicionando o actuator para obter métricas sobre a Aplicação
Adicionando Logs para a aplicação
Apresentando o projeto Spring boot Admin
Monitorando nossa aplicação Spring boot com o Spring boot Admin
Integração contínua
Deploy contínuo com Travis CI
Corrigindo os testes para rodar novamente o Travis
Executando o build com integração continua
Adicionando a bagde de integração contínua no nosso repositório
Cobertura de Código com Jacoco e Codecov
O que é cobertura de código
Configurando e executando o Jacoco no projeto
Configurando o Codecov no repositório do Github
Colocando a API em produção na Nuvem
Configurando o Heroku e fazendo o deploy na nuvem
Configurando o deploy no heroku através do github
Como fazer o build e gerar os artefator JAR ou WAR
Testando a API de livros em produção através do Insomnia
Testando a API de empréstimos em produção