package de.idealo.logback.appender.jedisclient; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisSentinelPool; import redis.clients.jedis.util.Pool; public class JedisPoolFactoryTest { @Mock private RedisConnectionConfig redisConnectionConfig; @Mock private JedisSentinelPool jedisSentinelPool; @Mock private JedisPool jedisPool; @Mock private JedisPoolCreator jedisPoolCreator; @InjectMocks private JedisPoolFactory jedisPoolFactory; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); when(jedisPoolCreator.createJedisPool(Matchers.any())).thenReturn(jedisPool); when(jedisPoolCreator.createJedisSentinelPool(Matchers.any())).thenReturn(jedisSentinelPool); } @Test public void create_jedis_pool_on_node_scheme() throws Exception { when(redisConnectionConfig.getScheme()).thenReturn(RedisConnectionConfig.RedisScheme.NODE); final Pool<Jedis> pool = jedisPoolFactory.createPool(redisConnectionConfig); assertThat(pool, is(instanceOf(JedisPool.class))); } @Test public void create_sentinel_pool_on_sentinel_scheme() throws Exception { when(redisConnectionConfig.getScheme()).thenReturn(RedisConnectionConfig.RedisScheme.SENTINEL); final Pool<Jedis> pool = jedisPoolFactory.createPool(redisConnectionConfig); assertThat(pool, is(instanceOf(JedisSentinelPool.class))); } @Test(expected = IllegalArgumentException.class) public void exception_on_null_scheme() throws Exception { when(redisConnectionConfig.getScheme()).thenReturn(null); final Pool<Jedis> pool = jedisPoolFactory.createPool(redisConnectionConfig); assertThat(pool, is(instanceOf(JedisPool.class))); } }