package com.lordofthejars.nosqlunit.infinispan;
import static com.lordofthejars.nosqlunit.infinispan.EmbeddedInfinispan.EmbeddedInfinispanRuleBuilder.newEmbeddedInfinispanRule;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.io.ByteArrayInputStream;
import org.infinispan.Cache;
import org.infinispan.commons.api.BasicCache;
import org.infinispan.manager.EmbeddedCacheManager;
import org.junit.After;
import org.junit.ClassRule;
import org.junit.Test;
public class WhenEmbeddedInfinispanOperationsAreRequired {
private static final String SIMPLE_DATA = "{\n" +
" \"data\": [\n" +
" {\n" +
" \"key\":\"key1\",\n" +
" \"value\":\"alex\" \n" +
" }\n" +
" ]\n" +
"}\n" +
"";
@ClassRule
public static EmbeddedInfinispan embeddedInfinispan = newEmbeddedInfinispanRule().build();
@After
public void tearDown() {
EmbeddedCacheManager defaultEmbeddedInstance = EmbeddedInfinispanInstancesFactory.getInstance().getDefaultEmbeddedInstance();
BasicCache<Object, Object> cache = defaultEmbeddedInstance.getCache();
cache.clear();
}
@Test
public void data_should_be_inserted_into_infinispan() {
EmbeddedCacheManager defaultEmbeddedInstance = EmbeddedInfinispanInstancesFactory.getInstance().getDefaultEmbeddedInstance();
InfinispanOperation infinispanOperation = new InfinispanOperation(defaultEmbeddedInstance.getCache());
infinispanOperation.insert(new ByteArrayInputStream(SIMPLE_DATA.getBytes()));
BasicCache<String, String> cache = infinispanOperation.connectionManager();
assertThat(cache.get("key1"), is("alex"));
}
@Test
public void data_should_be_removed_from_infinispan() {
EmbeddedCacheManager defaultEmbeddedInstance = EmbeddedInfinispanInstancesFactory.getInstance().getDefaultEmbeddedInstance();
InfinispanOperation infinispanOperation = new InfinispanOperation(defaultEmbeddedInstance.getCache());
infinispanOperation.insert(new ByteArrayInputStream(SIMPLE_DATA.getBytes()));
infinispanOperation.deleteAll();
BasicCache<String, String> cache = infinispanOperation.connectionManager();
assertThat(cache.size(), is(0));
}
@Test
public void data_should_be_compared_between_expected_and_current_data() {
EmbeddedCacheManager defaultEmbeddedInstance = EmbeddedInfinispanInstancesFactory.getInstance().getDefaultEmbeddedInstance();
InfinispanOperation infinispanOperation = new InfinispanOperation(defaultEmbeddedInstance.getCache());
infinispanOperation.insert(new ByteArrayInputStream(SIMPLE_DATA.getBytes()));
boolean sameDataset = infinispanOperation.databaseIs(new ByteArrayInputStream(SIMPLE_DATA.getBytes()));
assertThat(sameDataset, is(true));
}
}