package gov.samhsa.consent2share.service.account; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import gov.samhsa.consent2share.common.UniqueValueGeneratorException; import gov.samhsa.consent2share.domain.patient.Patient; import gov.samhsa.consent2share.domain.patient.PatientRepository; import java.util.ArrayList; import java.util.Arrays; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.StringUtils; @RunWith(MockitoJUnitRunner.class) public class MrnServiceImplTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Mock private PatientRepository patientRepository; @InjectMocks private MrnServiceImpl sut; @Test public void testGenerateMrn() { // Arrange final String prefixMock = "PREFIXMOCK"; ReflectionTestUtils.setField(sut, "prefix", prefixMock); when(patientRepository.findAllByMedicalRecordNumber(anyString())) .thenReturn(new ArrayList<Patient>(1)); // Act String mrn = sut.generateMrn(); // Assert assertTrue(StringUtils.hasText(mrn)); assertTrue(mrn.startsWith(prefixMock)); } @Test public void testGenerateMrn_Throws_UniqueValueGeneratorException() { // Arrange final String prefixMock = "PREFIXMOCK"; ReflectionTestUtils.setField(sut, "prefix", prefixMock); Patient patientMock = mock(Patient.class); when(patientRepository.findAllByMedicalRecordNumber(anyString())) .thenReturn(Arrays.asList(patientMock)); thrown.expect(UniqueValueGeneratorException.class); // Act sut.generateMrn(); } }