package gov.samhsa.consent2share.si; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedList; import javax.sql.DataSource; 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.Spy; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.jdbc.core.JdbcTemplate; @RunWith(MockitoJUnitRunner.class) public class ConsentGetterImplTest { @Mock private JdbcTemplate jdbcTemplateMock; @Mock private DataSource dataSourceMock; @Mock private SignedConsentDtoRowMapper simpleConsentDtoRowMapperMock; @Mock private RevokedConsentDtoRowMapper policyIdDtoRowMapperMock; @Rule public ExpectedException thrown = ExpectedException.none(); @Spy @InjectMocks private ConsentGetterImpl sut; @Test public void testGetConsent() throws SQLException { // Arrange long consentIdMock = 1; SignedConsentDto simpleConsentDtoMock = mock(SignedConsentDto.class); LinkedList<SignedConsentDto> simpleConsentDtoListMock = new LinkedList<SignedConsentDto>(); simpleConsentDtoListMock.add(simpleConsentDtoMock); when( simpleConsentDtoRowMapperMock.mapRow(isA(ResultSet.class), anyInt())).thenReturn(simpleConsentDtoMock); when(sut.getJdbcTemplate()).thenReturn(jdbcTemplateMock); when( jdbcTemplateMock.query( eq(ConsentGetterImpl.SQL_GET_SIGNED_CONSENT), isA(Object[].class), eq(simpleConsentDtoRowMapperMock))) .thenReturn(simpleConsentDtoListMock); // Act SignedConsentDto response = sut.getSignedConsentDto(consentIdMock); // Assert assertEquals(simpleConsentDtoMock, response); } @Test public void testGetPolicyId() throws SQLException { long consentIdMock = 1; LinkedList<RevokedConsentDto> policyIdDtoListMock = new LinkedList<RevokedConsentDto>(); RevokedConsentDto policyIdDtoMock = mock(RevokedConsentDto.class); policyIdDtoListMock.add(policyIdDtoMock); when(policyIdDtoRowMapperMock.mapRow(isA(ResultSet.class), anyInt())) .thenReturn(policyIdDtoMock); when(sut.getJdbcTemplate()).thenReturn(jdbcTemplateMock); when( jdbcTemplateMock.query( eq(ConsentGetterImpl.SQL_GET_REVOKED_CONSENT), isA(Object[].class), eq(policyIdDtoRowMapperMock))) .thenReturn(policyIdDtoListMock); RevokedConsentDto response = sut.getRevokedConsentDto(consentIdMock); assertEquals(policyIdDtoMock, response); } }