package com.aol.micros.server.elasticache;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.stub;
import static org.junit.Assert.assertEquals;
import com.aol.micro.server.elasticache.TransientElasticacheDataConnection;
import net.spy.memcached.internal.OperationFuture;
import org.junit.Before;
import org.junit.Test;
import net.spy.memcached.MemcachedClient;
import java.util.Optional;
public class TransientElasticacheDataConnectionTest {
MemcachedClient memcachedClient;
@Before
public void setup() {
memcachedClient = mock(MemcachedClient.class);
stub(memcachedClient.get("key1")).toReturn("value1");
stub(memcachedClient.get("key2")).toReturn("value2");
OperationFuture<Boolean> mockedFuture = mock(OperationFuture.class);
stub(memcachedClient.add("keyAdd", 3600, "valueadd")).toReturn(mockedFuture);
}
@Test
public void happyPathGetTest() {
TransientElasticacheDataConnection transientClient = new TransientElasticacheDataConnection(memcachedClient, 3, 1);
assertEquals(Optional.ofNullable("value1"), transientClient.get("key1"));
assertEquals(Optional.ofNullable("value2"), transientClient.get("key2"));
}
@Test
public void notExistingKeyGetTest() {
TransientElasticacheDataConnection transientClient = new TransientElasticacheDataConnection(memcachedClient, 3, 1);
assertEquals(Optional.empty(), transientClient.get("key3"));
}
@Test
public void notExistingKeyPutTest() {
TransientElasticacheDataConnection transientClient = new TransientElasticacheDataConnection(memcachedClient, 3, 1);
assertEquals(false, transientClient.add("keyAdd", 3600, "valueadd"));
}
@Test
public void testIsAvailableFalse() {
TransientElasticacheDataConnection transientClient = new TransientElasticacheDataConnection(memcachedClient, 3, 1);
transientClient.setConnectionTested(false);
assertEquals(false, transientClient.isAvailable());
}
@Test
public void testIsAvailableTrue() {
TransientElasticacheDataConnection transientClient = new TransientElasticacheDataConnection(memcachedClient, 3, 1);
transientClient.setConnectionTested(true);
assertEquals(true, transientClient.isAvailable());
}
}