theJoseAlan / Spring-Dinho-Mercadinho

Spring com JUnit 5

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dinho Mercadinho

API desenvolvida para pôr em prática meus conhecimentos de JUnit

Badge em Desenvolvimento

Tecnologias/Ferramentas usadas

  • Alan-Java Java
  • Alan-MySqlPostgreSql
  • Alan-Spring Spring
  • Alan-Maven Maven
  • Alan-Postman Posman
  • Alan-Junit JUnit5
  • Alan-Intellij Intellij

⭐ Breve descrição

O sistema possui três entidades (Comprador, Produto, Carrinho)

Ao criar um produto e um comprador, eles serão adicionados em no Carrinho. Assim, o carrinho conterá um produto e os dois estarão associados a um comprador

⚙️ Operações

  • Comprador: Criar (Post), Listar todos (Get), Obter por id (Get), Atualizar (Put) e deletar por id (Delete)
  • Produto: Criar (Post), Listar (Get)
  • Carrinho: Criar (Post), Obter por id (Get)

🌫 Camadas (Pacotes)

Camada Função
Entity Inserção/recepção de atributos e conf. das classes
Repository Extende JpaRepository para métodos de CRUD
Controller Configurar verbos e status HTTP
Service Regras do sistema e ações CRUD

👀 Testes

Os testes foram realizados nas camadas de Controller e Service, além da classe principal. Dessa forma, os métodos e atributos das demais classes puderam ser testadas também Veja abaixo um exemplo de teste do método create da classe Carrinho:

@Test
void criar() {
    Mockito.when(carrinhoService.criar(Mockito.any())).thenReturn(carrinho);

    ResponseEntity<Carrinho> response = carrinhoController.criar(carrinho);

    assertNotNull(response);
    assertNotNull(response.getBody());
    assertNotNull(response.getBody().getId());
    assertNotNull(response.getBody().getProduto());
    assertNotNull(response.getBody().getComprador());

    assertEquals(HttpStatus.OK, response.getStatusCode());

    assertEquals(ResponseEntity.class, response.getClass());
    assertEquals(Carrinho.class, response.getBody().getClass());
    assertEquals(Produto.class, response.getBody().getProduto().getClass());
    assertEquals(Comprador.class, response.getBody().getComprador().getClass());

    assertEquals(1L, response.getBody().getComprador().getId());
    assertEquals("Ana", response.getBody().getComprador().getNome());
    assertEquals("1234", response.getBody().getComprador().getCpf());
    assertEquals("Endereco", response.getBody().getComprador().getEndereco());
    assertEquals("4321", response.getBody().getComprador().getTelefone());

    assertEquals(1L, response.getBody().getProduto().getId());
    assertEquals("Arroz", response.getBody().getProduto().getNome());
    assertEquals(3.50, response.getBody().getProduto().getValorUnitario());
    assertEquals(2, response.getBody().getProduto().getQuantidade());
    assertEquals(7, response.getBody().getProduto().getValorTotal());

    Double total = response.getBody().getProduto().getValorUnitario()*response.getBody().getProduto().getQuantidade();

    assertEquals(total, response.getBody().getProduto().getValorTotal());


}

Print da criação de um comprador no postman

postman

Perceba que apenas o teste deste método já cobre uma boa parte do código: Testa os atributos das duas classes associadas ao carrinho (Comprador e Produto) e verifica se as duas não estão nulas. Além disso, a resposta da requisição HTTP também é testada, isso garante que não retorne uma resposta diferente da que fio configurada no método POST em controller. É importante que cada teste dentro dos Assertions seja feito com muito cuidado e atenção para garantir uma cobertura de 100% do sistema.

About

Spring com JUnit 5


Languages

Language:Java 100.0%