Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro

package med.voll.api.controller;

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.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc;

import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;

@SpringBootTest @AutoConfigureMockMvc @WithMockUser class ConsultaControllerTest {

@Autowired
private MockMvc mvc;

@Test
@DisplayName("Deveria devolver código http 400 quando informacoes estão invalidas")
void agendar_cenario1() throws Exception {
   var response = mvc.perform(post("/consultas").content("{}").contentType(MediaType.APPLICATION_JSON))
            .andReturn().getResponse();

    assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());

}

}

4 respostas

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi!

Manda aqui o código da sua classe ConsultaController

package med.voll.api.controller;

import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.validation.Valid;
import med.voll.api.domain.dto.DadosAgendamentoConsultaDTO;
import med.voll.api.domain.dto.DadosCancelamentoConsultaDTO;
import med.voll.api.domain.dto.DadosDetalhamentoConsulta;
import med.voll.api.domain.dto.DadosDetalhamentoConsultaDTO;
import med.voll.api.service.AgendaConsultaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/consulta")
@SecurityRequirement(name = "bearer-key")
public class ConsultaController {

    @Autowired
    private AgendaConsultaService consultaService;

    @PostMapping
    @Transactional
    public ResponseEntity<DadosDetalhamentoConsulta> agenda(@RequestBody @Valid DadosAgendamentoConsultaDTO dados) {
        var dto = consultaService.agendar(dados);

        return ResponseEntity.ok(dto);
    }

    @DeleteMapping
    @Transactional
    public ResponseEntity<Void> cancelar(@RequestBody @Valid DadosCancelamentoConsultaDTO dados) {
        consultaService.cancelar(dados);
        return ResponseEntity.noContent().build();
    }
}
solução!

No seu controller está mapeado a url como consulta (singular) mas no teste está chamando a url consultas (no plural)