package gov.samhsa.consent2share.service.admin;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import gov.samhsa.consent2share.domain.reference.AdministrativeGenderCodeRepository;
import gov.samhsa.consent2share.domain.staff.Staff;
import gov.samhsa.consent2share.domain.staff.StaffRepository;
import gov.samhsa.consent2share.service.dto.AdminProfileDto;
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 AdminProfileDtoToAdministratorMapperTest {
@Mock
StaffRepository providerAdminRepository;
@Mock
AdministrativeGenderCodeRepository administrativeGenderCodeRepository;
@InjectMocks
AdminProfileDtoToAdministratorMapper sut;
@Test
public void testMap_Given_Null_Username_And_Null_Admin_Id() {
// Arrange
AdminProfileDto adminProfileDto = mock(AdminProfileDto.class);
when(adminProfileDto.getUsername()).thenReturn(null);
when(adminProfileDto.getId()).thenReturn(null);
final String firstName = "Firstname";
when(adminProfileDto.getFirstName()).thenReturn(firstName);
// Act
Staff administrator = sut.map(adminProfileDto);
// Assert
assertEquals(firstName, administrator.getFirstName());
}
@Test
public void testMap_Given_Username() {
// Arrange
final String username = "username";
AdminProfileDto adminProfileDto = mock(AdminProfileDto.class);
when(adminProfileDto.getUsername()).thenReturn(username);
Staff administrator = mock(Staff.class);
when(providerAdminRepository.findByUsername(username)).thenReturn(
administrator);
final String firstName = "Firstname";
when(adminProfileDto.getFirstName()).thenReturn(firstName);
// Act
Staff result = sut.map(adminProfileDto);
// Assert
assertEquals(administrator, result);
}
@Test
public void test_General_Case() {
final String username = "username";
AdminProfileDto adminProfileDto = mock(AdminProfileDto.class);
when(adminProfileDto.getUsername()).thenReturn(username);
when(adminProfileDto.getEmail()).thenReturn("consent2share@gmail.com");
Staff administrator = mock(Staff.class);
when(providerAdminRepository.findByUsername(username)).thenReturn(
administrator);
final String firstName = "Firstname";
when(adminProfileDto.getFirstName()).thenReturn(firstName);
when(adminProfileDto.getAdministrativeGenderCode()).thenReturn("M");
Staff result = sut.map(adminProfileDto);
assertEquals(administrator, result);
}
}