Created
May 16, 2022 15:22
-
-
Save jordisilvazup/b0fb5755686d7fdb01a84f8a2640515f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package br.com.zup.edu.fornecedormanager.controller; | |
import br.com.zup.edu.fornecedormanager.model.Fornecedor; | |
import br.com.zup.edu.fornecedormanager.model.Telefone; | |
import br.com.zup.edu.fornecedormanager.repository.FornecedorRepository; | |
import br.com.zup.edu.fornecedormanager.repository.TelefoneRepository; | |
import com.fasterxml.jackson.databind.ObjectMapper; | |
import org.junit.jupiter.api.BeforeEach; | |
import org.junit.jupiter.api.DisplayName; | |
import org.junit.jupiter.api.Test; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; | |
import org.springframework.boot.test.context.SpringBootTest; | |
import org.springframework.test.context.ActiveProfiles; | |
import org.springframework.test.web.servlet.MockMvc; | |
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; | |
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; | |
import org.springframework.web.server.ResponseStatusException; | |
import static org.junit.jupiter.api.Assertions.*; | |
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; | |
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | |
@SpringBootTest | |
@ActiveProfiles("test") | |
@AutoConfigureMockMvc(printOnlyOnFailure = false) | |
class RemoverTelefoneControllerTest { | |
@Autowired | |
private FornecedorRepository fornecedorRepository; | |
@Autowired | |
private TelefoneRepository telefoneRepository; | |
@Autowired | |
private ObjectMapper mapper; | |
@Autowired | |
private MockMvc mockMvc; | |
private Fornecedor fornecedor; | |
@BeforeEach | |
void setUp() { | |
telefoneRepository.deleteAll(); | |
fornecedorRepository.deleteAll(); | |
this.fornecedor = new Fornecedor("Rafael Ponte", "Revistas de Programação", "Zup Edu"); | |
fornecedorRepository.save(fornecedor); | |
} | |
@DisplayName("nao deve remover um telefone quando o fornecedor nao existe") | |
@Test | |
void test() throws Exception { | |
MockHttpServletRequestBuilder request = delete( | |
"/fornecedores/{idFornecedor}/telefones/{idTelefone}", | |
Integer.MAX_VALUE, | |
Integer.MAX_VALUE | |
); | |
Exception resolvedException = mockMvc.perform(request) | |
.andExpect( | |
status().isNotFound() | |
) | |
.andReturn() | |
.getResolvedException(); | |
assertNotNull(resolvedException); | |
assertEquals(ResponseStatusException.class, resolvedException.getClass()); | |
ResponseStatusException exception = (ResponseStatusException) resolvedException; | |
assertEquals("Fornecedor nao cadastrado", exception.getReason()); | |
} | |
@DisplayName("nao deve remover um telefone que não existe") | |
@Test | |
void test1() throws Exception { | |
MockHttpServletRequestBuilder request = delete( | |
"/fornecedores/{idFornecedor}/telefones/{idTelefone}", | |
fornecedor.getId(), | |
Integer.MAX_VALUE | |
); | |
Exception resolvedException = mockMvc.perform(request) | |
.andExpect( | |
status().isNotFound() | |
) | |
.andReturn() | |
.getResolvedException(); | |
assertNotNull(resolvedException); | |
assertEquals(ResponseStatusException.class, resolvedException.getClass()); | |
ResponseStatusException exception = (ResponseStatusException) resolvedException; | |
assertEquals("Telefone nao cadastrado", exception.getReason()); | |
} | |
@DisplayName("nao deve remover o telefone que nao pertence a um fornecedor") | |
@Test | |
void test2() throws Exception { | |
Fornecedor novoFornecedor = new Fornecedor("Jordi Henrique", "Videos sobre programacao", "Zup Edu"); | |
fornecedorRepository.save(novoFornecedor); | |
Telefone telefone = new Telefone(this.fornecedor, "35", "977885463"); | |
telefoneRepository.save(telefone); | |
MockHttpServletRequestBuilder request = delete( | |
"/fornecedores/{idFornecedor}/telefones/{idTelefone}", | |
novoFornecedor.getId(), | |
telefone.getId() | |
); | |
Exception resolvedException = mockMvc.perform(request) | |
.andExpect( | |
status().isUnprocessableEntity() | |
) | |
.andReturn() | |
.getResolvedException(); | |
assertNotNull(resolvedException); | |
assertEquals(ResponseStatusException.class, resolvedException.getClass()); | |
ResponseStatusException exception = (ResponseStatusException) resolvedException; | |
assertEquals("Este telefone nao pertence ao fornecedor", exception.getReason()); | |
} | |
@DisplayName("deve remover o telefone de um fornecedor") | |
@Test | |
void test3() throws Exception { | |
Telefone telefone = new Telefone(fornecedor, "35", "977885463"); | |
telefoneRepository.save(telefone); | |
MockHttpServletRequestBuilder request = delete( | |
"/fornecedores/{idFornecedor}/telefones/{idTelefone}", | |
fornecedor.getId(), | |
telefone.getId() | |
); | |
mockMvc.perform(request) | |
.andExpect( | |
status().isNoContent() | |
); | |
assertFalse(telefoneRepository.existsById(telefone.getId())); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment