Skip to content

Commit 4cac169

Browse files
committed
Integration test: buscarPorNomePagina, returns 400.
Invalid parameters (invalid name).
1 parent 2559238 commit 4cac169

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

src/main/java/com/sistemacliente/controller/ClienteController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,15 @@ public ResponseEntity<ClienteResponseDTO> encontrarClientePorCpf(@PathVariable S
7777

7878
@GetMapping(value = "/paginadaordem")
7979
public ResponseEntity<Page<ClienteResponseDTO>> listaPaginadaOrdenada
80-
(@RequestParam(defaultValue = "0") int pagina,
81-
@RequestParam(defaultValue = "3") int itens,
80+
(@RequestParam(defaultValue = "0") int pagina, @RequestParam(defaultValue = "3") int itens,
8281
@RequestParam(required = false) String ordenadoPor){
8382
Page<ClienteResponseDTO> lista = service.listaPaginadaPorOrdenacao(pagina, itens, ordenadoPor);
8483
return ResponseEntity.ok(lista);
8584
}
8685

8786
@GetMapping(value = "/buscapornome")
8887
public ResponseEntity<Page<ClienteResponseDTO>> buscarPorNomePagina(
89-
@RequestParam(defaultValue = "nome") String nome, @RequestParam(defaultValue = "0") int pagina,
88+
@RequestParam(required = false) String nome, @RequestParam(defaultValue = "0") int pagina,
9089
@RequestParam(defaultValue = "3") int itens){
9190
Page<ClienteResponseDTO> page = service.buscarPorNome(nome, pagina, itens);
9291
return ResponseEntity.ok(page);

src/test/java/com/sistemaclliente/ClienteControllerIntegrationTest.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,31 @@
1515
import org.junit.jupiter.api.Test;
1616
import org.junit.jupiter.params.ParameterizedTest;
1717
import org.junit.jupiter.params.provider.CsvSource;
18+
import org.junit.jupiter.params.provider.EmptySource;
1819
import org.junit.jupiter.params.provider.NullAndEmptySource;
20+
import org.junit.jupiter.params.provider.NullSource;
1921
import org.junit.jupiter.params.provider.ValueSource;
2022
import org.springframework.beans.factory.annotation.Autowired;
2123
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
2224
import org.springframework.boot.test.context.SpringBootTest;
25+
import org.springframework.context.annotation.Import;
2326
import org.springframework.http.MediaType;
2427
import org.springframework.test.context.ActiveProfiles;
2528
import org.springframework.test.web.servlet.MockMvc;
2629

2730
import com.fasterxml.jackson.databind.ObjectMapper;
2831
import com.sistemacliente.SistemaClientesJavaApplication;
32+
import com.sistemacliente.exception.ValidationExceptionHandler;
2933
import com.sistemacliente.model.Cliente;
3034
import com.sistemacliente.model.dto.ClienteRequestDTO;
31-
import com.sistemacliente.model.dto.ClienteResponseDTO;
3235
import com.sistemacliente.repository.ClienteRepository;
3336

3437
import jakarta.transaction.Transactional;
3538

3639
@SpringBootTest(classes = SistemaClientesJavaApplication.class)
3740
@AutoConfigureMockMvc
3841
@ActiveProfiles("test")
42+
@Import(ValidationExceptionHandler.class)
3943
public class ClienteControllerIntegrationTest {
4044

4145
@Autowired
@@ -55,9 +59,7 @@ public void setup() {
5559
repository.deleteAll();
5660
}
5761

58-
@Test
59-
@Transactional
60-
@DisplayName("Returns 200 and a list of the clients from the database.")
62+
@Test @Transactional @DisplayName("Returns 200 and a list of the clients from the database.")
6163
public void listarClientes_fullList_return200() throws Exception {
6264
Cliente cliente1 = new Cliente();
6365
cliente1.setNome("Marcus");
@@ -465,6 +467,17 @@ public void buscarPorNomePagina_invalidParameters_returns400(String nome, int pa
465467
.andExpect(status().isBadRequest())
466468
.andExpect(content().string("A página não pode ser negativa e itens não pode ser menor que 1."));
467469
}
470+
471+
@ParameterizedTest @NullAndEmptySource @ValueSource(strings = " ")
472+
@DisplayName("Returns 400. Invalid parameters (invalid name).")
473+
public void buscarPorNomePagina_invalidName_returns400(String nome) throws Exception{
474+
mvc.perform(get("/buscapornome?pagina=0&itens=2").param("nome", nome))
475+
.andExpect(status().isBadRequest()).andExpect(content()
476+
.string("Nome para busca não pode ser vazio ou nulo."));
477+
}
478+
479+
480+
468481
}
469482

470483

src/test/java/com/sistemaclliente/ClienteControllerTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,9 +662,8 @@ public void buscarPorNomePagina_paginaItensInvalidos_retorno400(String nome, int
662662
verifyNoMoreInteractions(service);
663663
}
664664

665-
@ParameterizedTest
666-
@NullAndEmptySource
667-
@ValueSource(strings = " ")
665+
@ParameterizedTest @NullAndEmptySource @ValueSource(strings = " ")
666+
@DisplayName("Returns 400. Invalid parameters (invalid name).")
668667
public void buscarPorNomePagina_nomeInvalido_retorno400(String nome) throws Exception{
669668
when(service.buscarPorNome(nome, 0, 2)).thenThrow(new
670669
IllegalArgumentException("Nome deve ter entre 3 e 60 caracteres, não pode ser nulo ou vazio."));

0 commit comments

Comments
 (0)