Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haga lo que hicimos en aula

@WebMvcTest(MedicoController.class)
@AutoConfigureJsonTesters
@WithMockUser
class MedicoControllerTest {

@Autowired
private MockMvc mockMvc;

@MockBean
private MedicoRepository repository;

@Autowired
private JacksonTester<DatosRegistroMedico> registroJson;

@Autowired
private JacksonTester<DatosDetalleMedico> detalleJson;

@Test
void registrar_medico_sin_body_retorna_400() throws Exception {
mockMvc.perform(post("/medicos"))
.andExpect(status().isBadRequest());
}

@Test
void registrar_medico_con_body_valido_retorna_201_y_json() throws Exception {

DatosDireccion direccion = datosDireccion();

MedicoJPA medico = new MedicoJPA(
        null,
        true,
        "Médico01",
        "medico01@mail.com",
        "3008882121",
        "1897000",
        Especialidad.CARDIOLOGIA,
        new DireccionJPA(direccion)
);

when(repository.save(any())).thenReturn(medico);

var requestBody = registroJson.write(
        new DatosRegistroMedico(
                "Médico01",
                "medico01@mail.com",
                "3008882121",
                "1897000",
                Especialidad.CARDIOLOGIA,
                direccion
        )
).getJson();

var response = mockMvc.perform(post("/medicos")
                .contentType(MediaType.APPLICATION_JSON)
                .content(requestBody))
        .andExpect(status().isCreated())
        .andReturn()
        .getResponse();

var jsonEsperado = detalleJson.write(new DatosDetalleMedico(medico)).getJson();

assertThat(response.getContentAsString()).isEqualTo(jsonEsperado);

}