diff --git a/server/wfprev-api/src/test/java/ca/bc/gov/nrs/wfprev/CodesControllerTest.java b/server/wfprev-api/src/test/java/ca/bc/gov/nrs/wfprev/CodesControllerTest.java new file mode 100644 index 000000000..6fbfa0f4a --- /dev/null +++ b/server/wfprev-api/src/test/java/ca/bc/gov/nrs/wfprev/CodesControllerTest.java @@ -0,0 +1,160 @@ +package ca.bc.gov.nrs.wfprev; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +import org.junit.jupiter.api.Test; +import static org.mockito.Mockito.when; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.hateoas.CollectionModel; +import org.springframework.http.MediaType; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.web.servlet.MockMvc; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import ca.bc.gov.nrs.wfprev.common.enums.CodeTables; +import ca.bc.gov.nrs.wfprev.controllers.CodesController; +import ca.bc.gov.nrs.wfprev.data.models.ForestAreaCodeModel; +import ca.bc.gov.nrs.wfprev.data.models.GeneralScopeCodeModel; +import ca.bc.gov.nrs.wfprev.data.models.ProjectTypeCodeModel; +import ca.bc.gov.nrs.wfprev.services.CodesService; + +@WebMvcTest(CodesController.class) +@Import({SecurityConfig.class, TestcontainersConfiguration.class}) +class CodesControllerTest { + + @MockBean + private CodesService codesService; + + @Autowired + private MockMvc mockMvc; + + @Test + @WithMockUser + void testGetAllCodes() throws Exception { + testGetForestAreaCodes(); + testGetGeneralScopeCodes(); + testGetProjectTypeCodes(); + } + + void testGetForestAreaCodes() throws Exception { + String exampleId1 = UUID.randomUUID().toString(); + String exampleId2 = UUID.randomUUID().toString(); + + ForestAreaCodeModel fac1 = new ForestAreaCodeModel(); + fac1.setForestAreaCode(exampleId1); + + ForestAreaCodeModel fac2 = new ForestAreaCodeModel(); + fac2.setForestAreaCode(exampleId2); + + List facList = Arrays.asList(fac1, fac2); + CollectionModel facModel = CollectionModel.of(facList); + + when(codesService.getAllForestAreaCodes()).thenReturn(facModel); + + mockMvc.perform(get("/codes/" + CodeTables.FOREST_AREA_CODE) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + } + + void testGetGeneralScopeCodes() throws Exception { + String exampleId1 = UUID.randomUUID().toString(); + String exampleId2 = UUID.randomUUID().toString(); + + GeneralScopeCodeModel fac1 = new GeneralScopeCodeModel(); + fac1.setGeneralScopeCode(exampleId1); + + GeneralScopeCodeModel fac2 = new GeneralScopeCodeModel(); + fac2.setGeneralScopeCode(exampleId2); + + List facList = Arrays.asList(fac1, fac2); + CollectionModel facModel = CollectionModel.of(facList); + + when(codesService.getAllGeneralScopeCodes()).thenReturn(facModel); + + mockMvc.perform(get("/codes/" + CodeTables.GENERAL_SCOPE_CODE) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + } + + void testGetProjectTypeCodes() throws Exception { + String exampleId1 = UUID.randomUUID().toString(); + String exampleId2 = UUID.randomUUID().toString(); + + ProjectTypeCodeModel fac1 = new ProjectTypeCodeModel(); + fac1.setProjectTypeCode(exampleId1); + + ProjectTypeCodeModel fac2 = new ProjectTypeCodeModel(); + fac2.setProjectTypeCode(exampleId2); + + List facList = Arrays.asList(fac1, fac2); + CollectionModel facModel = CollectionModel.of(facList); + + when(codesService.getAllProjectTypeCodes()).thenReturn(facModel); + + mockMvc.perform(get("/codes/" + CodeTables.PROJECT_TYPE_CODE) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + } + + @Test + @WithMockUser + void testGetCodesById() throws Exception { + String ptID = UUID.randomUUID().toString(); + ProjectTypeCodeModel projectTypeCode = new ProjectTypeCodeModel(); + projectTypeCode.setProjectTypeCode(ptID); + + when(codesService.getProjectTypeCodeById(ptID)).thenReturn(projectTypeCode); + + mockMvc.perform(get("/codes/{codeTable}/{id}", CodeTables.PROJECT_TYPE_CODE, ptID) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + + String gsID = UUID.randomUUID().toString(); + GeneralScopeCodeModel generalScopeCode = new GeneralScopeCodeModel(); + generalScopeCode.setGeneralScopeCode(gsID); + + when(codesService.getGeneralScopeCodeById(gsID)).thenReturn(generalScopeCode); + + mockMvc.perform(get("/codes/{codeTable}/{id}", CodeTables.GENERAL_SCOPE_CODE, gsID) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + + String faID = UUID.randomUUID().toString(); + ForestAreaCodeModel forestAreaCode = new ForestAreaCodeModel(); + forestAreaCode.setForestAreaCode(faID); + + when(codesService.getForestAreaCodeById(faID)).thenReturn(forestAreaCode); + + mockMvc.perform(get("/codes/{codeTable}/{id}", CodeTables.FOREST_AREA_CODE, faID) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + } + + @Test + @WithMockUser + void testCodesNotFound() throws Exception { + ForestAreaCodeModel forestAreaCode = new ForestAreaCodeModel(); + GeneralScopeCodeModel generalScopeCode = new GeneralScopeCodeModel(); + ProjectTypeCodeModel projectTypeCode = new ProjectTypeCodeModel(); + + when(codesService.getForestAreaCodeById(null)).thenReturn(forestAreaCode); + when(codesService.getGeneralScopeCodeById(null)).thenReturn(generalScopeCode); + when(codesService.getProjectTypeCodeById(null)).thenReturn(projectTypeCode); + + mockMvc.perform(get("/codes/{codeTable}/{id}", CodeTables.FOREST_AREA_CODE, null) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()); + mockMvc.perform(get("/codes/{codeTable}/{id}", CodeTables.GENERAL_SCOPE_CODE, null) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()); + mockMvc.perform(get("/codes/{codeTable}/{id}", CodeTables.PROJECT_TYPE_CODE, null) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()); + } +} diff --git a/server/wfprev-api/src/test/java/ca/bc/gov/nrs/wfprev/ExampleControllerTest.java b/server/wfprev-api/src/test/java/ca/bc/gov/nrs/wfprev/ExampleControllerTest.java deleted file mode 100644 index 1284638cf..000000000 --- a/server/wfprev-api/src/test/java/ca/bc/gov/nrs/wfprev/ExampleControllerTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package ca.bc.gov.nrs.wfprev; - -import java.util.Arrays; -import java.util.List; -import java.util.UUID; - -import org.junit.jupiter.api.Test; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; -import org.springframework.hateoas.CollectionModel; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.web.servlet.MockMvc; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import ca.bc.gov.nrs.wfprev.controllers.ExampleController; -import ca.bc.gov.nrs.wfprev.data.models.ExampleCodeModel; -import ca.bc.gov.nrs.wfprev.data.models.ExampleModel; -import ca.bc.gov.nrs.wfprev.services.ExampleService; - -@WebMvcTest(ExampleController.class) -@Import({SecurityConfig.class, TestcontainersConfiguration.class}) -class ExampleControllerTest { - - @MockBean - private ExampleService exampleService; - - @Autowired - private MockMvc mockMvc; - - @Test - @WithMockUser - void testGetAllExamples() throws Exception { - String exampleId1 = UUID.randomUUID().toString(); - String exampleId2 = UUID.randomUUID().toString(); - - ExampleModel example1 = new ExampleModel(); - example1.setExampleGuid(exampleId1); - - ExampleModel example2 = new ExampleModel(); - example2.setExampleGuid(exampleId2); - - List exampleList = Arrays.asList(example1, example1); - CollectionModel collectionModel = CollectionModel.of(exampleList); - - when(exampleService.getAllExamples()).thenReturn(collectionModel); - - mockMvc.perform(get("/wfprev/examples") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); - } - - @Test - @WithMockUser - void testGetExampleById() throws Exception { - String exampleId = UUID.randomUUID().toString(); - ExampleModel exampleModel = new ExampleModel(); - exampleModel.setExampleGuid(exampleId); - - when(exampleService.getExampleById(exampleId)).thenReturn(exampleModel); - - mockMvc.perform(get("/wfprev/examples/{id}", exampleId) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); - } - - @Test - @WithMockUser - void testGetExampleByIdNotFound() throws Exception { - String exampleId = null; - ExampleModel exampleModel = new ExampleModel(); - - when(exampleService.getExampleById(null)).thenReturn(exampleModel); - - mockMvc.perform(get("/wfprev/examples/{id}", exampleId) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isNotFound()); - } - - @Test - @WithMockUser - void getUserNotFoundCodeById() throws Exception { - String exampleCodeId = "INVALID_CODE"; - - when(exampleService.getExampleCodeById(eq(exampleCodeId))).thenReturn(null); - - mockMvc.perform(get("/wfprev/exampleCodes/{id}", exampleCodeId)) - .andExpect(status().isNotFound()); - } - - @Test - @WithMockUser - void getExampleCodeById() throws Exception { - String exampleCodeId = "VALID_CODE"; - ExampleCodeModel exampleCodeModel = new ExampleCodeModel(); - exampleCodeModel.setExampleCode(exampleCodeId); - - when(exampleService.getExampleCodeById(eq(exampleCodeId))).thenReturn(exampleCodeModel); - - mockMvc.perform(get("/wfprev/exampleCodes/{id}", exampleCodeId)) - .andExpect(status().isOk()); - - } -}