View Javadoc
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  }