1 package com.atlassian.sal.spring.connection;
2
3 import io.atlassian.fugue.Option;
4 import com.atlassian.sal.api.rdbms.ConnectionCallback;
5 import com.atlassian.sal.spring.connection.SpringHostConnectionAccessor.ConnectionProvider;
6 import org.junit.Before;
7 import org.junit.Rule;
8 import org.junit.Test;
9 import org.junit.rules.ExpectedException;
10 import org.junit.runner.RunWith;
11 import org.mockito.Mock;
12 import org.mockito.junit.MockitoJUnitRunner;
13 import org.springframework.transaction.PlatformTransactionManager;
14
15 import java.sql.Connection;
16 import java.sql.SQLException;
17
18 import static org.hamcrest.CoreMatchers.is;
19 import static org.hamcrest.MatcherAssert.assertThat;
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 @Rule
27 public ExpectedException expectedException = ExpectedException.none();
28
29 private SpringHostConnectionAccessor springHostConnectionAccessor;
30
31 @Mock
32 private ConnectionProvider connectionProvider;
33 @Mock
34 private Connection connection;
35 @Mock
36 private PlatformTransactionManager transactionManager;
37 @Mock
38 private ConnectionCallback<Object> callback;
39 @Mock
40 private Object result;
41
42 @Before
43 public void before() {
44 springHostConnectionAccessor = new SpringHostConnectionAccessor(connectionProvider, transactionManager);
45 }
46
47 @Test
48 public void getSchemaName() {
49 when(connectionProvider.getSchemaName()).thenReturn(Option.option("schema"));
50
51 assertThat(springHostConnectionAccessor.getSchemaName().get(), is("schema"));
52 }
53
54 @Test
55 public void execute() throws SQLException {
56 when(connectionProvider.getConnection()).thenReturn(connection);
57 when(callback.execute(connection)).thenReturn(result);
58
59 assertThat(springHostConnectionAccessor.execute(true, true, callback), is(result));
60
61 verify(callback).execute(connection);
62 verifyNoMoreInteractions(callback);
63 verifyNoMoreInteractions(connection);
64 }
65 }