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.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; 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.ConceptCode; import gov.samhsa.consent2share.domain.valueset.ConceptCodeRepository; import gov.samhsa.consent2share.domain.valueset.ConceptCodeValueSet; import gov.samhsa.consent2share.domain.valueset.ConceptCodeValueSetRepository; import gov.samhsa.consent2share.domain.valueset.ValueSet; import gov.samhsa.consent2share.domain.valueset.ValueSetRepository; import gov.samhsa.consent2share.service.dto.ConceptCodeDto; import gov.samhsa.consent2share.service.dto.ConceptCodeVSCSDto; import java.util.ArrayList; import java.util.Arrays; 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; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @RunWith(MockitoJUnitRunner.class) public class ConceptCodeServiceImplTest { private final int conceptCodePageSize = 20; @Mock ConceptCodeRepository conceptCodeRepository; @Mock ValueSetRepository valueSetRepository; @Mock CodeSystemRepository codeSystemRepository; @Mock CodeSystemVersionRepository codeSystemVersionRepository; @Mock ConceptCodeValueSetRepository conceptCodeValueSetRepository; @Mock ValueSetMgmtHelper valueSetMgmtHelper; @InjectMocks ConceptCodeServiceImpl conceptCodeServiceImpl = new ConceptCodeServiceImpl( conceptCodePageSize, conceptCodeRepository, valueSetRepository, codeSystemRepository, codeSystemVersionRepository, conceptCodeValueSetRepository, valueSetMgmtHelper); @Test public void testDeleteConceptCode() throws ConceptCodeNotFoundException { ConceptCode deleted = mock(ConceptCode.class); when(conceptCodeRepository.findOne(anyLong())).thenReturn(deleted); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when(valueSetMgmtHelper.createConceptCodeDtoFromEntity(deleted)) .thenReturn(conceptCodeDto); Assert.assertEquals(conceptCodeServiceImpl.delete((long) 1), conceptCodeDto); } @Test(expected = ConceptCodeNotFoundException.class) public void testDeleteConceptCode_throw_ConceptCodeNotFoundException() throws ConceptCodeNotFoundException { when(conceptCodeRepository.findOne(anyLong())).thenReturn(null); conceptCodeServiceImpl.delete((long) 1); } @Test(expected = ValueSetNotFoundException.class) public void testfindId() throws ValueSetNotFoundException, ConceptCodeNotFoundException { ConceptCode conceptCode = mock(ConceptCode.class); when(conceptCodeRepository.findOne(anyLong())).thenReturn(conceptCode); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when(valueSetMgmtHelper.createConceptCodeDtoFromEntity(conceptCode)) .thenReturn(conceptCodeDto); conceptCodeServiceImpl.findById((long) 1); } @Test(expected = ValueSetNotFoundException.class) public void testUpdateConceptCode_throw_ValueSetNotFoundException() throws ConceptCodeNotFoundException, ValueSetNotFoundException { ConceptCodeDto updated = mock(ConceptCodeDto.class); when(updated.getId()).thenReturn((long) 1); when(updated.getCode()).thenReturn("code"); when(updated.getName()).thenReturn("name"); when(updated.getUserName()).thenReturn("username"); ConceptCode conceptCode = mock(ConceptCode.class); when(conceptCodeRepository.findOne(anyLong())).thenReturn(conceptCode); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when(valueSetMgmtHelper.createConceptCodeDtoFromEntity(conceptCode)) .thenReturn(conceptCodeDto); conceptCodeServiceImpl.update(updated); } @Test(expected = ConceptCodeNotFoundException.class) public void testUpdateConceptCode_throw_ConceptCodeNotFoundException() throws ConceptCodeNotFoundException, ValueSetNotFoundException { ConceptCodeDto updated = mock(ConceptCodeDto.class); when(conceptCodeRepository.findOne(anyLong())).thenReturn(null); conceptCodeServiceImpl.update(updated); } @Test public void testUpdateConceptCode2() throws ConceptCodeNotFoundException, ValueSetNotFoundException { ConceptCodeDto updated = mock(ConceptCodeDto.class); when(updated.getId()).thenReturn((long) 1); when(updated.getCode()).thenReturn("code"); when(updated.getName()).thenReturn("name"); when(updated.getUserName()).thenReturn("username"); ConceptCode conceptCode = mock(ConceptCode.class); when(conceptCode.getId()).thenReturn((long) 1); when(conceptCodeRepository.findOne(anyLong())).thenReturn(conceptCode); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when(valueSetMgmtHelper.createConceptCodeDtoFromEntity(conceptCode)) .thenReturn(conceptCodeDto); List<Long> selVsIds = Arrays.asList((long) 1, (long) 2, (long) 3); when(updated.getValueSetIds()).thenReturn(selVsIds); List<ConceptCodeValueSet> cValueSets = new ArrayList(); ConceptCodeValueSet aCodeValueSet = mock(ConceptCodeValueSet.class); cValueSets.add(aCodeValueSet); when(conceptCodeValueSetRepository.findAllByPkConceptCodeId(anyLong())) .thenReturn(cValueSets); when(aCodeValueSet.getValueSet()).thenReturn(mock(ValueSet.class)); when(aCodeValueSet.getValueSet().getId()).thenReturn((long) 1); when(valueSetMgmtHelper.createConceptCodeDtoFromEntity(conceptCode)) .thenReturn(updated); // assertEquals(vst.update(updated),updated); } @Test(expected = ValueSetNotFoundException.class) public void testUpdateConceptCode_throw_valueSetNotFoundException2() throws ConceptCodeNotFoundException, ValueSetNotFoundException { ConceptCodeDto updated = mock(ConceptCodeDto.class); when(updated.getId()).thenReturn((long) 1); when(updated.getCode()).thenReturn("code"); when(updated.getName()).thenReturn("name"); when(updated.getUserName()).thenReturn("username"); ConceptCode conceptCode = mock(ConceptCode.class); when(conceptCode.getId()).thenReturn((long) 1); when(conceptCodeRepository.findOne(anyLong())).thenReturn(conceptCode); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when(valueSetMgmtHelper.createConceptCodeDtoFromEntity(conceptCode)) .thenReturn(conceptCodeDto); List<Long> selVsIds = Arrays.asList((long) 1, (long) 2, (long) 3); when(updated.getValueSetIds()).thenReturn(selVsIds); when(conceptCodeValueSetRepository.findAllByPkConceptCodeId(anyLong())) .thenReturn(null); conceptCodeServiceImpl.update(updated); } @Test public void testfindAll() { List<ConceptCode> conceptCodes = mock(List.class); when(conceptCodeRepository.findAll()).thenReturn(conceptCodes); List<ConceptCodeDto> conceptCodeDtos = new ArrayList(); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); conceptCodeDtos.add(conceptCodeDto); when(valueSetMgmtHelper.convertConceptCodeEntitiesToDtos(conceptCodes)) .thenReturn(conceptCodeDtos); assertEquals(conceptCodeServiceImpl.findAll(), conceptCodeDtos); } @Test public void testFindAllByName() { Page<ConceptCode> conceptCodes = mock(Page.class); List<ConceptCodeDto> conceptCodeDtos = mock(List.class); when( conceptCodeRepository.findAllByName(anyString(), anyString(), anyString(), anyString(), any(Pageable.class))) .thenReturn(conceptCodes); when( valueSetMgmtHelper .convertConceptCodeEntitiesToDtos(conceptCodes .getContent())).thenReturn(conceptCodeDtos); assertEquals( conceptCodeServiceImpl.findAllByName("a", null, null, null, 0) .get("conceptCodes"), conceptCodeDtos); } @Test public void testFindAllByCode() { Page<ConceptCode> conceptCodes = mock(Page.class); List<ConceptCodeDto> conceptCodeDtos = mock(List.class); when( conceptCodeRepository.findAllByCodeLike(anyString(), anyString(), anyString(), anyString(), any(Pageable.class))).thenReturn(conceptCodes); when( valueSetMgmtHelper .convertConceptCodeEntitiesToDtos(conceptCodes .getContent())).thenReturn(conceptCodeDtos); assertEquals( conceptCodeServiceImpl.findAllByCode("a", null, null, null, 0) .get("conceptCodes"), conceptCodeDtos); } @Test(expected = ValueSetNotFoundException.class) public void testCreateCodeSystem_throw_ValueSetCategoryNotFoundException() throws ValueSetNotFoundException, CodeSystemVersionNotFoundException, CodeSystemNotFoundException { ConceptCodeVSCSDto conceptCodeVSCSDto = mock(ConceptCodeVSCSDto.class); List<ValueSet> valueSets = mock(List.class); when(valueSetRepository.findAll()).thenReturn(valueSets); ConceptCodeVSCSDto result = conceptCodeServiceImpl.create(); } @Test(expected = CodeSystemNotFoundException.class) public void testCreateCodeSystem_throw_CodeSystemNotFoundException() throws ValueSetNotFoundException, CodeSystemVersionNotFoundException, CodeSystemNotFoundException { ConceptCodeVSCSDto conceptCodeVSCSDto = mock(ConceptCodeVSCSDto.class); List<ValueSet> valueSets = new ArrayList<ValueSet>(); ValueSet valueSet = mock(ValueSet.class); valueSets.add(valueSet); when(valueSetRepository.findAll()).thenReturn(valueSets); when(codeSystemVersionRepository.findOne(anyLong())).thenReturn(null); ConceptCodeVSCSDto result = conceptCodeServiceImpl.create(); } @Test(expected = CodeSystemNotFoundException.class) public void testCreateCodeSystemFromDto_throw_CodeSystemNotFoundException() throws ValueSetNotFoundException, CodeSystemNotFoundException, DuplicateConceptCodeException { ConceptCodeDto created = mock(ConceptCodeDto.class); when(created.getDescription()).thenReturn("description"); when(created.getCodeSystemVersionId()).thenReturn((long) 1); when(codeSystemVersionRepository.findOne(anyLong())).thenReturn(null); conceptCodeServiceImpl.create(created); } @Test(expected = ValueSetNotFoundException.class) public void testCreateCodeSystemFromDto_throw_ValueSetNotFoundException() throws ValueSetNotFoundException, CodeSystemNotFoundException, DuplicateConceptCodeException { ConceptCodeDto created = mock(ConceptCodeDto.class); when(created.getDescription()).thenReturn("description"); when(created.getCodeSystemVersionId()).thenReturn((long) 1); CodeSystemVersion selectedCsv = mock(CodeSystemVersion.class); when(codeSystemVersionRepository.findOne(anyLong())).thenReturn( selectedCsv); List<Long> selVsIds = Arrays.asList((long) 1, (long) 2, (long) 3); when(created.getValueSetIds()).thenReturn(null); conceptCodeServiceImpl.create(created); } @Test(expected = ValueSetNotFoundException.class) public void testCreateCodeSystemFromDto_throw_ValueSetNotFoundException_2() throws ValueSetNotFoundException, CodeSystemNotFoundException, DuplicateConceptCodeException { ConceptCodeDto created = mock(ConceptCodeDto.class); when(created.getDescription()).thenReturn("description"); when(created.getCodeSystemVersionId()).thenReturn((long) 1); CodeSystemVersion selectedCsv = mock(CodeSystemVersion.class); when(codeSystemVersionRepository.findOne(anyLong())).thenReturn( selectedCsv); List<Long> selVsIds = Arrays.asList((long) 1, (long) 2, (long) 3); when(created.getValueSetIds()).thenReturn(selVsIds); when(valueSetRepository.findOne(anyLong())).thenReturn(null); conceptCodeServiceImpl.create(created); } @Test public void testCreateCodeSystemFromDto_throw_ValueSetNotFoundException_3() throws ValueSetNotFoundException, CodeSystemNotFoundException, DuplicateConceptCodeException { ConceptCodeDto created = mock(ConceptCodeDto.class); when(created.getDescription()).thenReturn("description"); when(created.getCodeSystemVersionId()).thenReturn((long) 1); CodeSystemVersion selectedCsv = mock(CodeSystemVersion.class); when(codeSystemVersionRepository.findOne(anyLong())).thenReturn( selectedCsv); List<Long> selVsIds = Arrays.asList((long) 1, (long) 2, (long) 3); when(created.getValueSetIds()).thenReturn(selVsIds); ValueSet selectedVs = mock(ValueSet.class); when(valueSetRepository.findOne(anyLong())).thenReturn(selectedVs); when(created.getCode()).thenReturn("code"); when(selectedCsv.getId()).thenReturn((long) 1); ConceptCode conceptCode = mock(ConceptCode.class); when( conceptCodeRepository.findByCodeAndCodeSystemVersionId( anyString(), anyLong())).thenReturn(conceptCode); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when( valueSetMgmtHelper .createConceptCodeDtoFromEntity(any(ConceptCode.class))) .thenReturn(conceptCodeDto); assertEquals(conceptCodeServiceImpl.create(created), conceptCodeDto); } @Test public void testCreateCodeSystemFromDto_3() throws ValueSetNotFoundException, CodeSystemNotFoundException, DuplicateConceptCodeException { ConceptCodeDto created = mock(ConceptCodeDto.class); when(created.getDescription()).thenReturn("description"); when(created.getCodeSystemVersionId()).thenReturn((long) 1); CodeSystemVersion selectedCsv = mock(CodeSystemVersion.class); when(codeSystemVersionRepository.findOne(anyLong())).thenReturn( selectedCsv); List<Long> selVsIds = Arrays.asList((long) 1, (long) 2, (long) 3); when(created.getValueSetIds()).thenReturn(selVsIds); ValueSet selectedVs = mock(ValueSet.class); when(valueSetRepository.findOne(anyLong())).thenReturn(selectedVs); when(created.getCode()).thenReturn("code"); when(selectedCsv.getId()).thenReturn((long) 1); ConceptCode conceptCode = mock(ConceptCode.class); when( conceptCodeRepository.findByCodeAndCodeSystemVersionId( anyString(), anyLong())).thenReturn(null); ConceptCodeDto conceptCodeDto = mock(ConceptCodeDto.class); when( valueSetMgmtHelper .createConceptCodeDtoFromEntity(any(ConceptCode.class))) .thenReturn(conceptCodeDto); assertEquals(conceptCodeServiceImpl.create(created), conceptCodeDto); } }