package gov.samhsa.consent2share.service.valueset;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import gov.samhsa.consent2share.domain.valueset.CodeSystem;
import gov.samhsa.consent2share.domain.valueset.CodeSystemRepository;
import gov.samhsa.consent2share.domain.valueset.CodeSystemVersion;
import gov.samhsa.consent2share.domain.valueset.CodeSystemVersionRepository;
import gov.samhsa.consent2share.domain.valueset.ValueSetCategory;
import gov.samhsa.consent2share.service.dto.CodeSystemVersionCSDto;
import gov.samhsa.consent2share.service.dto.CodeSystemVersionDto;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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 CodeSystemVersionServiceImplTest {
@Mock
CodeSystemRepository codeSystemRepository;
@Mock
CodeSystemVersionRepository codeSystemVersionRepository;
@Mock
ValueSetMgmtHelper valueSetMgmtHelper;;
@InjectMocks
CodeSystemVersionServiceImpl vst;
@Test(expected = CodeSystemNotFoundException.class)
public void testCreateCodeSystemVersion_throw_CodeSystemNotFoundException()
throws CodeSystemNotFoundException {
CodeSystemVersionDto createdMock = mock(CodeSystemVersionDto.class);
when(createdMock.getDescription()).thenReturn("description");
when(createdMock.getName()).thenReturn("name");
when(createdMock.getCode()).thenReturn("code");
when(createdMock.getUserName()).thenReturn("username");
ValueSetCategory selected = new ValueSetCategory();
selected.setCode("code");
selected.setName("name");
selected.setId((long) 1);
when(codeSystemRepository.findOne((long) 1)).thenReturn(null);
vst.create(createdMock);
}
@Test
public void testDeleteCodeSystemVersion()
throws CodeSystemVersionNotFoundException {
CodeSystemVersion deleted = mock(CodeSystemVersion.class);
when(codeSystemVersionRepository.findOne(anyLong()))
.thenReturn(deleted);
CodeSystemVersionDto codeSystemVersionDto = mock(CodeSystemVersionDto.class);
when(valueSetMgmtHelper.createCodeSystemVersionDtoFromEntity(deleted))
.thenReturn(codeSystemVersionDto);
Assert.assertEquals(vst.delete((long) 1), codeSystemVersionDto);
}
@Test(expected = CodeSystemVersionNotFoundException.class)
public void testDeleteCodeSystemVersion_throw_CodeSystemVersionNotFoundException()
throws CodeSystemVersionNotFoundException {
when(codeSystemVersionRepository.findOne(anyLong())).thenReturn(null);
vst.delete((long) 1);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testfindAll() {
List<CodeSystemVersion> codeSystemVersionsMock = mock(List.class);
when(codeSystemVersionRepository.findAll()).thenReturn(
codeSystemVersionsMock);
List<CodeSystemVersionDto> codeSystemVersionDtos = new ArrayList();
CodeSystemVersionDto codeSystemVersionDto = mock(CodeSystemVersionDto.class);
codeSystemVersionDtos.add(codeSystemVersionDto);
when(
valueSetMgmtHelper
.convertCodeSystemVersionEntitiesToDtos(codeSystemVersionsMock))
.thenReturn(codeSystemVersionDtos);
assertEquals(vst.findAll(), codeSystemVersionDtos);
}
@Test
public void testfindId() throws CodeSystemNotFoundException {
CodeSystemVersion codeSystemVersionMock = mock(CodeSystemVersion.class);
List<CodeSystem> codeSystemsMock = new ArrayList<CodeSystem>();
CodeSystem codeSystemMock = mock(CodeSystem.class);
codeSystemsMock.add(codeSystemMock);
CodeSystemVersionDto codeSystemVersionDtoMock = mock(CodeSystemVersionDto.class);
when(codeSystemVersionRepository.findOne(anyLong())).thenReturn(
codeSystemVersionMock);
when(codeSystemRepository.findAll()).thenReturn(codeSystemsMock);
when(
valueSetMgmtHelper
.createCodeSystemVersionDtoFromEntity(codeSystemVersionMock))
.thenReturn(codeSystemVersionDtoMock);
assertEquals(vst.findById((long) 1), codeSystemVersionDtoMock);
}
@Test
public void testUpdateCodeSystemVersion()
throws CodeSystemVersionNotFoundException,
CodeSystemNotFoundException {
CodeSystemVersionDto updatedMock = mock(CodeSystemVersionDto.class);
when(updatedMock.getId()).thenReturn((long) 1);
when(updatedMock.getCode()).thenReturn("code");
when(updatedMock.getName()).thenReturn("name");
when(updatedMock.getUserName()).thenReturn("username");
CodeSystemVersionDto codeSystemVersionDtoMock = mock(CodeSystemVersionDto.class);
CodeSystemVersion codeSystemVersionMock = mock(CodeSystemVersion.class);
CodeSystem codeSystemMock = mock(CodeSystem.class);
when(codeSystemVersionRepository.findOne(anyLong())).thenReturn(
codeSystemVersionMock);
when(codeSystemVersionMock.getCodeSystem()).thenReturn(codeSystemMock);
when(codeSystemMock.getId()).thenReturn((long) 1);
when(codeSystemRepository.findOne(anyLong()))
.thenReturn(codeSystemMock);
when(
valueSetMgmtHelper
.createCodeSystemVersionDtoFromEntity(codeSystemVersionMock))
.thenReturn(codeSystemVersionDtoMock);
assertEquals(vst.update(updatedMock), codeSystemVersionDtoMock);
}
@Test(expected = CodeSystemVersionNotFoundException.class)
public void testUpdateCodeSystemVersion_throw_CodeSystemVersionNotFoundException()
throws CodeSystemVersionNotFoundException,
CodeSystemNotFoundException {
CodeSystemVersionDto updated = mock(CodeSystemVersionDto.class);
when(codeSystemVersionRepository.findOne(anyLong())).thenReturn(null);
vst.update(updated);
}
@SuppressWarnings("unchecked")
@Test
public void testCodeSystemVersionCSDto() throws CodeSystemNotFoundException {
CodeSystemVersionCSDto codeSystemVersionVSCDto = new CodeSystemVersionCSDto();
List<CodeSystem> codeSystemsMock = new ArrayList<CodeSystem>();
CodeSystem codeSystem = mock(CodeSystem.class);
codeSystemsMock.add(codeSystem);
when(codeSystemRepository.findAll()).thenReturn(codeSystemsMock);
Map<Long, String> codeSystemCategoriesMap = mock(Map.class);
when(valueSetMgmtHelper.convertCodeSystemEntitiesToMap(codeSystemsMock))
.thenReturn(codeSystemCategoriesMap);
codeSystemVersionVSCDto.setCodeSystemDtoMap(codeSystemCategoriesMap);
vst.create();
}
}