package com.lordofthejars.nosqlunit.elasticsearch2.integration.parser;
import com.lordofthejars.nosqlunit.elasticsearch2.parser.DataReader;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.node.Node;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Map;
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class WhenElasticsearchDataIsImported {
private static final String ELASTICSEARCH_DATA = "{\n" +
" \"documents\":[\n" +
" {\n" +
" \"document\":[\n" +
" {\n" +
" \"index\":{\n" +
" \"indexName\":\"tweeter\",\n" +
" \"indexType\":\"tweet\",\n" +
" \"indexId\":\"1\"\n" +
" }\n" +
" },\n" +
" {\n" +
" \"data\":{\n" +
" \"name\":\"a\",\n" +
" \"msg\":\"b\"\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
@Rule
public final TemporaryFolder temporaryFolder = new TemporaryFolder();
@Test
public void data_should_be_indexed() throws IOException {
final String pathHome = temporaryFolder.newFolder().getAbsolutePath();
final Settings settings = nodeBuilder().settings().put("path.home", pathHome).build();
try (final Node node = nodeBuilder().local(true).settings(settings).node();
final Client client = node.client()) {
final DataReader dataReader = new DataReader(client);
dataReader.read(new ByteArrayInputStream(ELASTICSEARCH_DATA.getBytes()));
final GetResponse response = client.prepareGet("tweeter", "tweet", "1").execute().actionGet();
final Map<String, Object> document = response.getSourceAsMap();
assertThat((String) document.get("name"), is("a"));
assertThat((String) document.get("msg"), is("b"));
}
}
}