package gov.samhsa.consent2share.service.valueset;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import gov.samhsa.consent2share.domain.consent.ConsentRepository;
import gov.samhsa.consent2share.domain.valueset.ValueSetCategory;
import gov.samhsa.consent2share.domain.valueset.ValueSetCategoryRepository;
import gov.samhsa.consent2share.service.dto.AddConsentFieldsDto;
import gov.samhsa.consent2share.service.dto.ValueSetCategoryDto;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ValueSetCategoryServiceImplTest {
@Mock
ValueSetCategoryRepository valueSetCategoryRepository;
@Mock
ConsentRepository consentRepositoryMock;
@Mock
ValueSetMgmtHelper valueSetMgmtHelper;
@InjectMocks
ValueSetCategoryServiceImpl vst;
@Test
public void testCreateValueSetValueSetCategory() {
ValueSetCategoryDto created = mock(ValueSetCategoryDto.class);
when(created.getDescription()).thenReturn("description");
when(created.getName()).thenReturn("name");
when(created.getCode()).thenReturn("code");
when(created.getUserName()).thenReturn("username");
ValueSetCategory valueSetCategory = mock(ValueSetCategory.class);
when(valueSetCategoryRepository.save(valueSetCategory)).thenReturn(
valueSetCategory);
// when(consentRepositoryMock.findAllByConsentDoNotShareSensitivityPolicyCodesValueSetCategory(valueSetCategory)).thenReturn(null);
when(
valueSetMgmtHelper.createValuesetCategoryDtoFromEntity(
any(ValueSetCategory.class),
any(ConsentRepository.class))).thenReturn(created);
ValueSetCategoryDto result = vst.create(created);
Assert.assertEquals(result, created);
}
@Test
public void testDeleteValueSetCategory()
throws ValueSetCategoryNotFoundException {
ValueSetCategory deleted = mock(ValueSetCategory.class);
when(valueSetCategoryRepository.findOne(anyLong())).thenReturn(deleted);
when(
consentRepositoryMock
.findAllByDoNotShareSensitivityPolicyCodesValueSetCategory(deleted))
.thenReturn(null);
ValueSetCategoryDto valueSetCategoryDto = mock(ValueSetCategoryDto.class);
when(
valueSetMgmtHelper.createValuesetCategoryDtoFromEntity(deleted,
consentRepositoryMock)).thenReturn(valueSetCategoryDto);
Assert.assertEquals(vst.delete((long) 1), valueSetCategoryDto);
}
@Test(expected = ValueSetCategoryNotFoundException.class)
public void testDeleteVelueSetCategory_throw_ValueSetCategoryNotFoundException()
throws ValueSetCategoryNotFoundException {
when(valueSetCategoryRepository.findOne(anyLong())).thenReturn(null);
vst.delete((long) 1);
}
@SuppressWarnings("unchecked")
@Test
public void testfindAll() {
List<ValueSetCategory> valueSets = mock(List.class);
when(valueSetCategoryRepository.findAll()).thenReturn(valueSets);
List<ValueSetCategoryDto> valueSetDtos = new ArrayList<ValueSetCategoryDto>();
ValueSetCategoryDto valueSetDto = mock(ValueSetCategoryDto.class);
valueSetDtos.add(valueSetDto);
when(
valueSetMgmtHelper.convertValueSetCategoryEntitiesToDtos(
valueSets, consentRepositoryMock)).thenReturn(
valueSetDtos);
assertEquals(vst.findAll(), valueSetDtos);
}
@Test
public void testfindId() {
ValueSetCategory valueSetCategory = mock(ValueSetCategory.class);
when(valueSetCategoryRepository.findOne(anyLong())).thenReturn(
valueSetCategory);
when(
consentRepositoryMock
.findAllByDoNotShareSensitivityPolicyCodesValueSetCategory(valueSetCategory))
.thenReturn(null);
ValueSetCategoryDto valueSetCategoryDto = mock(ValueSetCategoryDto.class);
when(
valueSetMgmtHelper.createValuesetCategoryDtoFromEntity(
valueSetCategory, consentRepositoryMock)).thenReturn(
valueSetCategoryDto);
assertEquals(vst.findById((long) 1), valueSetCategoryDto);
}
@Test
public void testUpdateValueSetCategory()
throws ValueSetCategoryNotFoundException {
ValueSetCategoryDto updated = mock(ValueSetCategoryDto.class);
when(updated.getId()).thenReturn((long) 1);
when(updated.getCode()).thenReturn("code");
when(updated.getName()).thenReturn("name");
when(updated.getUserName()).thenReturn("username");
ValueSetCategory valueSetCategory = mock(ValueSetCategory.class);
when(valueSetCategoryRepository.findOne(anyLong())).thenReturn(
valueSetCategory);
when(
consentRepositoryMock
.findAllByDoNotShareSensitivityPolicyCodesValueSetCategory(valueSetCategory))
.thenReturn(null);
ValueSetCategoryDto valueSetCategoryDto = mock(ValueSetCategoryDto.class);
when(
valueSetMgmtHelper.createValuesetCategoryDtoFromEntity(
valueSetCategory, consentRepositoryMock)).thenReturn(
valueSetCategoryDto);
assertEquals(vst.update(updated), valueSetCategoryDto);
}
@Test(expected = ValueSetCategoryNotFoundException.class)
public void testUpdateValueSetCategory_throw_ValueSetCategoryNotFoundException()
throws ValueSetCategoryNotFoundException {
ValueSetCategoryDto updated = mock(ValueSetCategoryDto.class);
when(valueSetCategoryRepository.findOne(anyLong())).thenReturn(null);
vst.update(updated);
}
@Test
public void testFindAllValueSetCategoriesAddConsentFieldsDto() {
// Arrange
String vscMockCode = "vscMockCode";
String vscMockName = "vscMockName";
String vscMockDescription = "vscMockDescription";
String vscMock2Code = "vscMock2Code";
String vscMock2Name = "vscMock2Name";
String vscMock2Description = "vscMock2Description";
ValueSetCategory vscMock = mock(ValueSetCategory.class);
ValueSetCategory vscMock2 = mock(ValueSetCategory.class);
when(vscMock.getCode()).thenReturn(vscMockCode);
when(vscMock.getName()).thenReturn(vscMockName);
when(vscMock.getDescription()).thenReturn(vscMockDescription);
when(vscMock2.getCode()).thenReturn(vscMock2Code);
when(vscMock2.getName()).thenReturn(vscMock2Name);
when(vscMock2.getDescription()).thenReturn(vscMock2Description);
List<ValueSetCategory> valueSetCategoryListMock = new ArrayList<ValueSetCategory>();
valueSetCategoryListMock.add(vscMock);
valueSetCategoryListMock.add(vscMock2);
when(valueSetCategoryRepository.findAll()).thenReturn(
valueSetCategoryListMock);
// Act
List<AddConsentFieldsDto> sensitivityPolicyDto = vst
.findAllValueSetCategoriesAddConsentFieldsDto();
// Assert
assertEquals(2, sensitivityPolicyDto.size());
assertEquals(vscMockCode, sensitivityPolicyDto.get(0).getCode());
assertEquals(vscMockName, sensitivityPolicyDto.get(0).getDisplayName());
assertEquals(vscMockDescription, sensitivityPolicyDto.get(0)
.getDescription());
assertEquals(vscMock2Code, sensitivityPolicyDto.get(1).getCode());
assertEquals(vscMock2Name, sensitivityPolicyDto.get(1).getDisplayName());
assertEquals(vscMock2Description, sensitivityPolicyDto.get(1)
.getDescription());
}
}