From 343993ac777e55fa227e721099e08e8131edcd77 Mon Sep 17 00:00:00 2001 From: Mirna Gama Date: Thu, 4 Jan 2024 12:36:11 -0300 Subject: [PATCH] [R1] Unit test for Doctor Controller post method --- .../controllers/DoctorControllerTest.java | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/test/java/com/mirna/hospitalmanagementapi/unit/application/controllers/DoctorControllerTest.java diff --git a/src/test/java/com/mirna/hospitalmanagementapi/unit/application/controllers/DoctorControllerTest.java b/src/test/java/com/mirna/hospitalmanagementapi/unit/application/controllers/DoctorControllerTest.java new file mode 100644 index 0000000..1666f9b --- /dev/null +++ b/src/test/java/com/mirna/hospitalmanagementapi/unit/application/controllers/DoctorControllerTest.java @@ -0,0 +1,69 @@ +package com.mirna.hospitalmanagementapi.unit.application.controllers; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +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.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultHandlers; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mirna.hospitalmanagementapi.domain.dtos.AddressDTO; +import com.mirna.hospitalmanagementapi.domain.dtos.DoctorDTO; +import com.mirna.hospitalmanagementapi.domain.enums.Specialty; + +/** + * + * @author Mirna Gama + * @version 1.0 + */ +@SpringBootTest +@AutoConfigureMockMvc(addFilters = false) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class DoctorControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private ObjectMapper mapper; + + /** + * Post a valid doctor. + */ + @Test + @DisplayName("Should post valid doctor and return http status ok") + public void testPostValidDoctor() throws Exception { + + DoctorDTO doctorDTO = new DoctorDTO("test", "test@gmail.com", "123456", "99999999", Specialty.ORTHOPEDICS, + new AddressDTO("TEST STREET", "NEIGHBORHOOD", "12345678", "CITY", "ST", null, null)); + + String doctorDTOContent = mapper.writeValueAsString(doctorDTO); + + mockMvc.perform(MockMvcRequestBuilders.post("/api/v1.0/doctors").contentType(MediaType.APPLICATION_JSON) + .characterEncoding("UTF-8").content(doctorDTOContent)) + .andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()); + } + + /** + * Avoid posting a invalid doctor. + */ + @Test + @DisplayName("Should not post invalid doctor and return http status bad request") + public void testPostInvalidDoctor() throws Exception { + + DoctorDTO doctorDTO = new DoctorDTO("", "test@gmail.com", "123456", "99999999", Specialty.ORTHOPEDICS, + new AddressDTO("TEST STREET", "NEIGHBORHOOD", "12345678", "CITY", "ST", null, null)); + + String doctorDTOContent = mapper.writeValueAsString(doctorDTO); + + mockMvc.perform(MockMvcRequestBuilders.post("/api/v1.0/doctors").contentType(MediaType.APPLICATION_JSON) + .characterEncoding("UTF-8").content(doctorDTOContent)) + .andExpect(MockMvcResultMatchers.status().isBadRequest()).andDo(MockMvcResultHandlers.print()); + } +}