package uk.ac.ox.zoo.seeg.abraid.mp.publicsite.web.admin; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import org.junit.Test; import org.mockito.InOrder; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.ui.Model; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseGroup; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.HealthMapDisease; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.HealthMapSubDisease; import uk.ac.ox.zoo.seeg.abraid.mp.common.dto.json.AbraidJsonObjectMapper; import uk.ac.ox.zoo.seeg.abraid.mp.common.dto.json.JsonHealthMapDisease; import uk.ac.ox.zoo.seeg.abraid.mp.common.dto.json.JsonHealthMapSubDisease; import uk.ac.ox.zoo.seeg.abraid.mp.common.dto.json.JsonNamedEntry; import uk.ac.ox.zoo.seeg.abraid.mp.common.service.core.DiseaseService; import uk.ac.ox.zoo.seeg.abraid.mp.common.service.core.HealthMapService; import java.util.Arrays; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.*; /** * Tests the HealthMapConfigController class. * Copyright (c) 2015 University of Oxford */ public class HealthMapConfigControllerTest { @Test public void getHealthMapConfigPageReturnsCorrectTemplateAndData() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); DiseaseService diseaseService = mock(DiseaseService.class); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); ObjectWriter objectWriter = (new ObjectMapper()).writer(); when(objectMapper.writer()).thenReturn(objectWriter); List<HealthMapDisease> healthMapDiseases = Arrays.asList(createMockHealthMapDisease(1, "A", 2, "B")); when(healthMapService.getAllHealthMapDiseases()).thenReturn(healthMapDiseases); List<HealthMapSubDisease> healthMapSubDiseases = Arrays.asList(createMockHealthMapSubDisease(3, "C", 4, "D", 5, "E")); when(healthMapService.getAllHealthMapSubDiseases()).thenReturn(healthMapSubDiseases); List<DiseaseGroup> diseaseGroups = Arrays.asList(createMockAbraidDisease(6, "F")); when(diseaseService.getAllDiseaseGroups()).thenReturn(diseaseGroups); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); Model model = mock(Model.class); // Act String result = target.getHealthMapConfigPage(model); // Assert assertThat(result).isEqualTo("admin/healthMapConfig"); verify(model).addAttribute("healthMapDiseases", "[{\"id\":1,\"name\":\"A\",\"abraidDisease\":{\"id\":2,\"name\":\"B\"}}]"); verify(model).addAttribute("healthMapSubDiseases", "[{\"id\":3,\"name\":\"C\",\"abraidDisease\":{\"id\":4,\"name\":\"D\"},\"parent\":{\"id\":5,\"name\":\"E\"}}]"); verify(model).addAttribute("abraidDiseases", "[{\"id\":6,\"name\":\"F\"}]"); } @Test public void getHealthMapConfigPageReturnsCorrectTemplateAndDataWithoutLinkedDiseases() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); DiseaseService diseaseService = mock(DiseaseService.class); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); ObjectWriter objectWriter = (new ObjectMapper()).writer(); when(objectMapper.writer()).thenReturn(objectWriter); List<HealthMapDisease> healthMapDiseases = Arrays.asList(createMockHealthMapDisease(1, "A", null, null)); when(healthMapService.getAllHealthMapDiseases()).thenReturn(healthMapDiseases); List<HealthMapSubDisease> healthMapSubDiseases = Arrays.asList(createMockHealthMapSubDisease(3, "C", null, null, null, null)); when(healthMapService.getAllHealthMapSubDiseases()).thenReturn(healthMapSubDiseases); List<DiseaseGroup> diseaseGroups = Arrays.asList(createMockAbraidDisease(6, "F")); when(diseaseService.getAllDiseaseGroups()).thenReturn(diseaseGroups); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); Model model = mock(Model.class); // Act String result = target.getHealthMapConfigPage(model); // Assert - Note: nulls will not be serialized (undefined) using the real AbraidJsonObjectMapper. assertThat(result).isEqualTo("admin/healthMapConfig"); verify(model).addAttribute("healthMapDiseases", "[{\"id\":1,\"name\":\"A\",\"abraidDisease\":null}]"); verify(model).addAttribute("healthMapSubDiseases", "[{\"id\":3,\"name\":\"C\",\"abraidDisease\":null,\"parent\":null}]"); verify(model).addAttribute("abraidDiseases", "[{\"id\":6,\"name\":\"F\"}]"); } @Test public void updateHealthMapDiseaseRejectsInvalidJson() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapDisease healthMapDisease = createMockHealthMapDisease(1, "2", 3, "4"); when(healthMapService.getHealthMapDiseasesById(1)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(3, "4"); when(diseaseService.getDiseaseGroupById(3)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act/Assert assertThat(target.updateHealthMapDisease(null).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(null, "2", 3, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, null, 3, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, "", 3, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, " ", 3, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, "2", null, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, "2", 3, null)).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, "2", 3, "")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, "2", 3, " ")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(null, null, null, null)).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); } @Test public void updateHealthMapDiseaseRejectsJsonWithInvalidIds() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapDisease healthMapDisease = createMockHealthMapDisease(1, "2", 3, "4"); when(healthMapService.getHealthMapDiseasesById(1)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(3, "4"); when(diseaseService.getDiseaseGroupById(3)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act/Assert assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(5, "2", 3, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapDisease(createMockJsonHealthMapDisease(1, "2", 5, "4")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); } @Test public void updateHealthMapDiseaseUpdatesDatabaseCorrectly() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapDisease healthMapDisease = createMockHealthMapDisease(1, "2", 3, "4"); when(healthMapService.getHealthMapDiseasesById(1)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(5, "6"); when(diseaseService.getDiseaseGroupById(5)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act JsonHealthMapDisease json = createMockJsonHealthMapDisease(1, "2", 5, "6"); ResponseEntity result = target.updateHealthMapDisease(json); // Assert assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); InOrder inOrder = inOrder(healthMapDisease, healthMapService); inOrder.verify(healthMapDisease).setDiseaseGroup(abraidDisease); inOrder.verify(healthMapService).saveHealthMapDisease(healthMapDisease); } @Test public void updateHealthMapDiseaseUpdatesDatabaseCorrectlyWithNullLinkedAbraidDisease() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapDisease healthMapDisease = createMockHealthMapDisease(1, "2", 3, "4"); when(healthMapService.getHealthMapDiseasesById(1)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act JsonHealthMapDisease json = createMockJsonHealthMapDisease(1, "2", null, null); ResponseEntity result = target.updateHealthMapDisease(json); // Assert assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); InOrder inOrder = inOrder(healthMapDisease, healthMapService); inOrder.verify(healthMapDisease).setDiseaseGroup(null); inOrder.verify(healthMapService).saveHealthMapDisease(healthMapDisease); } @Test public void updateHealthMapSubDiseaseRejectsInvalidJson() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapSubDisease healthMapSubDisease = createMockHealthMapSubDisease(1, "2", 3, "4", 5, "6"); when(healthMapService.getHealthMapSubDiseasesById(1)).thenReturn(healthMapSubDisease); HealthMapDisease healthMapDisease = createMockHealthMapDisease(5, "6", 7, "8"); when(healthMapService.getHealthMapDiseasesById(5)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(3, "4"); when(diseaseService.getDiseaseGroupById(3)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act/Assert assertThat(target.updateHealthMapSubDisease(null).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(null, "2", 3, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, null, 3, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "", 3, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, " ", 3, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", null, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, null, 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, "", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, " ", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, "4", null, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, "4", 5, "")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, "4", 5, " ")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(null, null, null, null, null, null)).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); } @Test public void updateHealthMapSubDiseaseRejectsJsonWithInvalidIds() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapSubDisease healthMapSubDisease = createMockHealthMapSubDisease(1, "2", 3, "4", 5, "6"); when(healthMapService.getHealthMapSubDiseasesById(1)).thenReturn(healthMapSubDisease); HealthMapDisease healthMapDisease = createMockHealthMapDisease(5, "6", 7, "8"); when(healthMapService.getHealthMapDiseasesById(5)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(3, "4"); when(diseaseService.getDiseaseGroupById(3)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act/Assert assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(9, "2", 3, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 9, "4", 5, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(target.updateHealthMapSubDisease(createMockJsonHealthMapSubDisease(1, "2", 3, "4", 9, "6")).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); } @Test public void updateHealthMapSubDiseaseUpdatesDatabaseCorrectly() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapSubDisease healthMapSubDisease = createMockHealthMapSubDisease(1, "2", 3, "4", 5, "6"); when(healthMapService.getHealthMapSubDiseasesById(1)).thenReturn(healthMapSubDisease); HealthMapDisease healthMapDisease = createMockHealthMapDisease(9, "10", 11, "12"); when(healthMapService.getHealthMapDiseasesById(9)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(7, "8"); when(diseaseService.getDiseaseGroupById(7)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act JsonHealthMapSubDisease json = createMockJsonHealthMapSubDisease(1, "2", 7, "8", 9, "10"); ResponseEntity result = target.updateHealthMapSubDisease(json); // Assert assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); InOrder inOrder = inOrder(healthMapSubDisease, healthMapService); inOrder.verify(healthMapSubDisease).setDiseaseGroup(abraidDisease); inOrder.verify(healthMapSubDisease).setHealthMapDisease(healthMapDisease); inOrder.verify(healthMapService).saveHealthMapSubDisease(healthMapSubDisease); } @Test public void updateHealthMapSubDiseaseUpdatesDatabaseCorrectlyWithNullLinkedAbraidDisease() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapSubDisease healthMapSubDisease = createMockHealthMapSubDisease(1, "2", 3, "4", 5, "6"); when(healthMapService.getHealthMapSubDiseasesById(1)).thenReturn(healthMapSubDisease); HealthMapDisease healthMapDisease = createMockHealthMapDisease(5, "6", 7, "8"); when(healthMapService.getHealthMapDiseasesById(5)).thenReturn(healthMapDisease); DiseaseService diseaseService = mock(DiseaseService.class); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act JsonHealthMapSubDisease json = createMockJsonHealthMapSubDisease(1, "2", null, null, 5, "6"); ResponseEntity result = target.updateHealthMapSubDisease(json); // Assert assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); InOrder inOrder = inOrder(healthMapSubDisease, healthMapService); inOrder.verify(healthMapSubDisease).setDiseaseGroup(null); inOrder.verify(healthMapSubDisease).setHealthMapDisease(healthMapDisease); inOrder.verify(healthMapService).saveHealthMapSubDisease(healthMapSubDisease); } @Test public void updateHealthMapSubDiseaseUpdatesDatabaseCorrectlyWithNullLinkedParentDisease() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapSubDisease healthMapSubDisease = createMockHealthMapSubDisease(1, "2", 3, "4", 5, "6"); when(healthMapService.getHealthMapSubDiseasesById(1)).thenReturn(healthMapSubDisease); DiseaseService diseaseService = mock(DiseaseService.class); DiseaseGroup abraidDisease = createMockAbraidDisease(3, "4"); when(diseaseService.getDiseaseGroupById(3)).thenReturn(abraidDisease); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act JsonHealthMapSubDisease json = createMockJsonHealthMapSubDisease(1, "2", 3, "4", null, null); ResponseEntity result = target.updateHealthMapSubDisease(json); // Act/Assert assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); InOrder inOrder = inOrder(healthMapSubDisease, healthMapService); inOrder.verify(healthMapSubDisease).setDiseaseGroup(abraidDisease); inOrder.verify(healthMapSubDisease).setHealthMapDisease(null); inOrder.verify(healthMapService).saveHealthMapSubDisease(healthMapSubDisease); } @Test public void updateHealthMapSubDiseaseUpdatesDatabaseCorrectlyWithNullLinkedBothDiseases() throws Exception { // Arrange HealthMapService healthMapService = mock(HealthMapService.class); HealthMapSubDisease healthMapSubDisease = createMockHealthMapSubDisease(1, "2", 3, "4", 5, "6"); when(healthMapService.getHealthMapSubDiseasesById(1)).thenReturn(healthMapSubDisease); DiseaseService diseaseService = mock(DiseaseService.class); AbraidJsonObjectMapper objectMapper = mock(AbraidJsonObjectMapper.class); HealthMapConfigController target = new HealthMapConfigController(healthMapService, diseaseService, objectMapper); // Act JsonHealthMapSubDisease json = createMockJsonHealthMapSubDisease(1, "2", null, null, null, null); ResponseEntity result = target.updateHealthMapSubDisease(json); // Assert assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); InOrder inOrder = inOrder(healthMapSubDisease, healthMapService); inOrder.verify(healthMapSubDisease).setDiseaseGroup(null); inOrder.verify(healthMapSubDisease).setHealthMapDisease(null); inOrder.verify(healthMapService).saveHealthMapSubDisease(healthMapSubDisease); } private HealthMapDisease createMockHealthMapDisease(Integer id, String name, Integer abraidId, String abraidName) { HealthMapDisease mock = mock(HealthMapDisease.class); when(mock.getId()).thenReturn(id); when(mock.getName()).thenReturn(name); if (abraidId != null || abraidName != null) { DiseaseGroup diseaseGroup = createMockAbraidDisease(abraidId, abraidName); when(mock.getDiseaseGroup()).thenReturn(diseaseGroup); } return mock; } private HealthMapSubDisease createMockHealthMapSubDisease(Integer id, String name, Integer abraidId, String abraidName, Integer parentId, String parentName) { HealthMapSubDisease mock = mock(HealthMapSubDisease.class); when(mock.getId()).thenReturn(id); when(mock.getName()).thenReturn(name); if (abraidId != null || abraidName != null) { DiseaseGroup diseaseGroup = createMockAbraidDisease(abraidId, abraidName); when(mock.getDiseaseGroup()).thenReturn(diseaseGroup); } if (parentId != null || parentName != null) { HealthMapDisease parent = mock(HealthMapDisease.class); when(parent.getId()).thenReturn(parentId); when(parent.getName()).thenReturn(parentName); when(mock.getHealthMapDisease()).thenReturn(parent); } return mock; } private DiseaseGroup createMockAbraidDisease(Integer id, String name) { DiseaseGroup mock = mock(DiseaseGroup.class); when(mock.getId()).thenReturn(id); when(mock.getName()).thenReturn(name); return mock; } private JsonHealthMapDisease createMockJsonHealthMapDisease(Integer id, String name, Integer abraidId, String abraidName) { JsonHealthMapDisease mock = mock(JsonHealthMapDisease.class); when(mock.getId()).thenReturn(id); when(mock.getName()).thenReturn(name); if (abraidId != null || abraidName != null) { JsonNamedEntry diseaseGroup = createMockJsonNamedEntry(abraidId, abraidName); when(mock.getAbraidDisease()).thenReturn(diseaseGroup); } return mock; } private JsonHealthMapSubDisease createMockJsonHealthMapSubDisease(Integer id, String name, Integer abraidId, String abraidName, Integer parentId, String parentName) { JsonHealthMapSubDisease mock = mock(JsonHealthMapSubDisease.class); when(mock.getId()).thenReturn(id); when(mock.getName()).thenReturn(name); if (abraidId != null || abraidName != null) { JsonNamedEntry diseaseGroup = createMockJsonNamedEntry(abraidId, abraidName); when(mock.getAbraidDisease()).thenReturn(diseaseGroup); } if (parentId != null || parentName != null) { JsonNamedEntry parent = createMockJsonNamedEntry(parentId, parentName); when(mock.getParent()).thenReturn(parent); } return mock; } private JsonNamedEntry createMockJsonNamedEntry(Integer id, String name) { JsonNamedEntry mock = mock(JsonNamedEntry.class); when(mock.getId()).thenReturn(id); when(mock.getName()).thenReturn(name); return mock; } }