package gov.samhsa.consent2share.service.notification; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import gov.samhsa.consent2share.domain.consent.Consent; import gov.samhsa.consent2share.domain.consent.SignedPDFConsent; import gov.samhsa.consent2share.domain.patient.Patient; import gov.samhsa.consent2share.domain.patient.PatientRepository; import gov.samhsa.consent2share.domain.provider.IndividualProvider; import java.util.HashSet; import java.util.Set; import org.junit.Before; 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 NotificationServiceImplTest { @Mock PatientRepository patientRepository; @InjectMocks NotificationServiceImpl nst; @Before public void setUp() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); } @Test public void testnotificationStage_is_add_provider() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); String result = nst.notificationStage("username", null); assertEquals("notification_add_provider", result); } @Test public void testnotificationStage_is_add_one_provider_successed() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); IndividualProvider individualProvider = mock(IndividualProvider.class); Set<IndividualProvider> individualProviders = new HashSet<IndividualProvider>(); individualProviders.add(individualProvider); when(patient.getIndividualProviders()).thenReturn(individualProviders); String result = nst.notificationStage("username", "add"); assertEquals("notification_add_one_provider_successed", result); } @Test public void testnotificationStage_is_add_second_provider() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); IndividualProvider individualProvider = mock(IndividualProvider.class); Set<IndividualProvider> individualProviders = new HashSet<IndividualProvider>(); individualProviders.add(individualProvider); when(patient.getIndividualProviders()).thenReturn(individualProviders); String result = nst.notificationStage("username", null); assertEquals("notification_add_second_provider", result); } @Test public void testnotificationStage_is_add_second_provider_successed() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); IndividualProvider individualProvider = mock(IndividualProvider.class); IndividualProvider individualProvider2 = mock(IndividualProvider.class); Set<IndividualProvider> individualProviders = new HashSet<IndividualProvider>(); individualProviders.add(individualProvider); individualProviders.add(individualProvider2); when(patient.getIndividualProviders()).thenReturn(individualProviders); String result = nst.notificationStage("username", "add"); assertEquals("notification_add_second_provider_successed", result); } @Test public void testnotificationStage_is_add_consent() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); IndividualProvider individualProvider = mock(IndividualProvider.class); IndividualProvider individualProvider2 = mock(IndividualProvider.class); Set<IndividualProvider> individualProviders = new HashSet<IndividualProvider>(); individualProviders.add(individualProvider); individualProviders.add(individualProvider2); when(patient.getIndividualProviders()).thenReturn(individualProviders); String result = nst.notificationStage("username", null); assertEquals("notification_add_consent", result); } @Test public void testnotificationStage_is_add_consent_successed() { Patient patient = mock(Patient.class); when(patientRepository.findByUsername(anyString())).thenReturn(patient); IndividualProvider individualProvider = mock(IndividualProvider.class); IndividualProvider individualProvider2 = mock(IndividualProvider.class); Set<IndividualProvider> individualProviders = new HashSet<IndividualProvider>(); Set<Consent> consents = new HashSet<Consent>(); Consent consent = mock(Consent.class); consents.add(consent); individualProviders.add(individualProvider); individualProviders.add(individualProvider2); when(patient.getIndividualProviders()).thenReturn(individualProviders); when(patient.getConsents()).thenReturn(consents); String result = nst.notificationStage("username", "add"); assertEquals("notification_add_consent_successed", result); } @Test public void testcheckConsentReviewStatus_when_consent_size_0() { Set<Consent> consents = new HashSet<Consent>(); boolean result = nst.checkConsentReviewStatus(consents); assertEquals(false, result); } @Test public void testcheckConsentReviewStatus_when_consent_has_not_reviewed() { Set<Consent> consents = new HashSet<Consent>(); Consent consent = mock(Consent.class); consents.add(consent); when(consent.getSignedPdfConsent()).thenReturn(null); boolean result = nst.checkConsentReviewStatus(consents); assertEquals(false, result); } @Test public void testcheckConsentReviewStatus_when_consent_has_reviewed() { Set<Consent> consents = new HashSet<Consent>(); Consent consent = mock(Consent.class); SignedPDFConsent signedPdfConsent = mock(SignedPDFConsent.class); consents.add(consent); when(consent.getSignedPdfConsent()).thenReturn(signedPdfConsent); boolean result = nst.checkConsentReviewStatus(consents); assertEquals(true, result); } @Test public void testcheckConsentSignedStatus_when_consent_size_0() { Set<Consent> consents = new HashSet<Consent>(); boolean result = nst.checkConsentSignedStatus(consents); assertEquals(false, result); } @Test public void testcheckConsentSignedStatus_when_consent_has_not_reviewed() { Set<Consent> consents = new HashSet<Consent>(); Consent consent = mock(Consent.class); consents.add(consent); when(consent.getSignedPdfConsent()).thenReturn(null); boolean result = nst.checkConsentSignedStatus(consents); assertEquals(false, result); } @Test public void testcheckConsentSignedStatus_when_consent_has_reviewed_not_signed() { Set<Consent> consents = new HashSet<Consent>(); Consent consent = mock(Consent.class); SignedPDFConsent signedPdfConsent = mock(SignedPDFConsent.class); consents.add(consent); when(consent.getSignedPdfConsent()).thenReturn(signedPdfConsent); when(consent.getSignedPdfConsent().getSignedPdfConsentContent()) .thenReturn(null); boolean result = nst.checkConsentSignedStatus(consents); assertEquals(false, result); } @Test public void testcheckConsentSignedStatus_when_consent_has_reviewed_signed() { Set<Consent> consents = new HashSet<Consent>(); Consent consent = mock(Consent.class); SignedPDFConsent signedPdfConsent = mock(SignedPDFConsent.class); byte[] signedPdfConsentContent = new byte[] { (byte) 0xba, (byte) 0x8a, }; consents.add(consent); when(consent.getSignedPdfConsent()).thenReturn(signedPdfConsent); when(consent.getSignedPdfConsent().getSignedPdfConsentContent()) .thenReturn(signedPdfConsentContent); boolean result = nst.checkConsentSignedStatus(consents); assertEquals(true, result); } }