View Javadoc

1   package com.atlassian.sal.spring.connection;
2   
3   import com.atlassian.sal.api.rdbms.ConnectionCallback;
4   import com.atlassian.sal.spring.connection.SpringHostConnectionAccessor.ConnectionProvider;
5   import org.junit.Before;
6   import org.junit.Rule;
7   import org.junit.Test;
8   import org.junit.rules.ExpectedException;
9   import org.junit.runner.RunWith;
10  import org.mockito.Mock;
11  import org.mockito.runners.MockitoJUnitRunner;
12  import org.springframework.transaction.PlatformTransactionManager;
13  
14  import java.sql.Connection;
15  import java.sql.SQLException;
16  
17  import static org.hamcrest.CoreMatchers.is;
18  import static org.hamcrest.MatcherAssert.assertThat;
19  import static org.mockito.Mockito.doThrow;
20  import static org.mockito.Mockito.verify;
21  import static org.mockito.Mockito.verifyNoMoreInteractions;
22  import static org.mockito.Mockito.when;
23  
24  @RunWith (MockitoJUnitRunner.class)
25  public class TestSpringHostConnectionAccessor
26  {
27      @Rule
28      public ExpectedException expectedException = ExpectedException.none();
29  
30      private SpringHostConnectionAccessor springHostConnectionAccessor;
31  
32      @Mock
33      private ConnectionProvider connectionProvider;
34      @Mock
35      private Connection connection;
36      @Mock
37      private PlatformTransactionManager transactionManager;
38      @Mock
39      private ConnectionCallback<Object> callback;
40      @Mock
41      private Object result;
42  
43      @Before
44      public void before()
45      {
46          springHostConnectionAccessor = new SpringHostConnectionAccessor(connectionProvider, transactionManager);
47      }
48  
49      @Test
50      public void execute() throws SQLException
51      {
52          when(connectionProvider.getConnection()).thenReturn(connection);
53          when(callback.execute(connection)).thenReturn(result);
54  
55          assertThat(springHostConnectionAccessor.execute(true, true, callback), is(result));
56  
57          verify(callback).execute(connection);
58          verifyNoMoreInteractions(callback);
59  
60          verify(connection).close();
61          verifyNoMoreInteractions(connection);
62      }
63  
64      @Test
65      public void executeCloseFail() throws SQLException
66      {
67          when(connectionProvider.getConnection()).thenReturn(connection);
68          when(callback.execute(connection)).thenReturn(result);
69          doThrow(new SQLException()).when(connection).close();
70  
71          assertThat(springHostConnectionAccessor.execute(true, true, callback), is(result));
72  
73          verify(callback).execute(connection);
74          verifyNoMoreInteractions(callback);
75  
76          verify(connection).close();
77          verifyNoMoreInteractions(connection);
78      }
79  }