1 package com.atlassian.activeobjects.confluence;
2
3 import com.atlassian.activeobjects.spi.DatabaseType;
4 import com.atlassian.activeobjects.spi.InitExecutorServiceProvider;
5 import com.atlassian.activeobjects.spi.TenantAwareDataSourceProvider;
6 import com.atlassian.sal.api.executor.ThreadLocalDelegateExecutorFactory;
7 import com.atlassian.tenancy.api.Tenant;
8 import org.junit.Before;
9 import org.junit.Test;
10 import org.junit.runner.RunWith;
11 import org.mockito.AdditionalAnswers;
12 import org.mockito.Mock;
13 import org.mockito.junit.MockitoJUnitRunner;
14
15 import java.util.concurrent.ExecutorService;
16
17 import static org.hamcrest.CoreMatchers.equalTo;
18 import static org.hamcrest.CoreMatchers.isA;
19 import static org.junit.Assert.assertThat;
20 import static org.mockito.ArgumentMatchers.any;
21 import static org.mockito.Mockito.mock;
22 import static org.mockito.Mockito.when;
23
24 @RunWith(MockitoJUnitRunner.class)
25 public class ConfluenceInitExecutorServiceProviderUnitTest {
26 private ConfluenceInitExecutorServiceProvider confluenceInitExecutorServiceProvider;
27
28 @Mock
29 private InitExecutorServiceProvider defaultInitExecutorServiceProvider;
30
31 @Mock
32 private TenantAwareDataSourceProvider tenantAwareDataSourceProvider;
33
34 @Mock
35 private ThreadLocalDelegateExecutorFactory threadLocalDelegateExecutorFactory;
36
37 @Mock
38 private Tenant tenant;
39
40 @Before
41 public void setUp() {
42 confluenceInitExecutorServiceProvider = new ConfluenceInitExecutorServiceProvider(threadLocalDelegateExecutorFactory, tenantAwareDataSourceProvider, defaultInitExecutorServiceProvider);
43
44 when(threadLocalDelegateExecutorFactory.createExecutorService(any(ExecutorService.class))).thenAnswer(AdditionalAnswers.returnsFirstArg());
45 }
46
47 @Test
48 public void hsqlSnowflake() {
49 when(tenantAwareDataSourceProvider.getDatabaseType(tenant)).thenReturn(DatabaseType.HSQL);
50
51 assertThat(confluenceInitExecutorServiceProvider.initExecutorService(tenant), isA(ExecutorService.class));
52 }
53
54 @Test
55 public void realDatabase() {
56 when(tenantAwareDataSourceProvider.getDatabaseType(tenant)).thenReturn(DatabaseType.POSTGRESQL);
57
58 final ExecutorService executorService = mock(ExecutorService.class);
59 when(defaultInitExecutorServiceProvider.initExecutorService(tenant)).thenReturn(executorService);
60
61 assertThat(confluenceInitExecutorServiceProvider.initExecutorService(tenant), equalTo(executorService));
62 }
63 }