package com.lambdaworks.redis.support; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import javax.enterprise.inject.Disposes; import javax.enterprise.inject.Produces; import com.lambdaworks.redis.AbstractRedisClientTest; import com.lambdaworks.redis.FastShutdown; import org.apache.webbeans.cditest.CdiTestContainer; import org.apache.webbeans.cditest.CdiTestContainerLoader; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import com.lambdaworks.redis.RedisConnectionStateListener; import com.lambdaworks.redis.RedisURI; import com.lambdaworks.redis.resource.ClientResources; import com.lambdaworks.redis.resource.DefaultClientResources; /** * @author Mark Paluch * @since 3.0 */ public class CdiTest { static CdiTestContainer container; @BeforeClass public static void setUp() throws Exception { container = CdiTestContainerLoader.getCdiContainer(); container.bootContainer(); container.startApplicationScope(); } @Produces public RedisURI redisURI() { return RedisURI.Builder.redis(AbstractRedisClientTest.host, AbstractRedisClientTest.port).build(); } @Produces @PersonDB public ClientResources clientResources() { return DefaultClientResources.create(); } public void shutdownClientResources(@Disposes ClientResources clientResources) throws Exception { FastShutdown.shutdown(clientResources); } @PersonDB @Produces public RedisURI redisURIQualified() { return RedisURI.Builder.redis(AbstractRedisClientTest.host, AbstractRedisClientTest.port + 1).build(); } @Test public void testInjection() { InjectedClient injectedClient = container.getInstance(InjectedClient.class); assertThat(injectedClient.redisClient).isNotNull(); assertThat(injectedClient.redisClusterClient).isNotNull(); assertThat(injectedClient.qualifiedRedisClient).isNotNull(); assertThat(injectedClient.qualifiedRedisClusterClient).isNotNull(); RedisConnectionStateListener mock = mock(RedisConnectionStateListener.class); // do some interaction to force the container a creation of the repositories. injectedClient.redisClient.addListener(mock); injectedClient.redisClusterClient.addListener(mock); injectedClient.qualifiedRedisClient.addListener(mock); injectedClient.qualifiedRedisClusterClient.addListener(mock); injectedClient.pingRedis(); } @AfterClass public static void afterClass() throws Exception { container.stopApplicationScope(); container.shutdownContainer(); } }