package com.github.obourgain.elasticsearch.http.handler.search.suggest;
import static org.elasticsearch.search.suggest.SuggestBuilders.completionSuggestion;
import static org.elasticsearch.search.suggest.SuggestBuilders.termSuggestion;
import org.assertj.core.api.Assertions;
import org.elasticsearch.action.suggest.SuggestRequest;
import org.elasticsearch.client.Requests;
import org.elasticsearch.common.jackson.dataformat.yaml.snakeyaml.emitter.EmitterException;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.search.suggest.term.TermSuggestionBuilder;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import com.github.obourgain.elasticsearch.http.AbstractTest;
import com.github.obourgain.elasticsearch.http.response.entity.suggest.Completion;
public class SuggestActionHandlerTest extends AbstractTest {
static XContentType savedContentType;
@Test
@Ignore("suggestion are not serialized correctly as of 1.4.4, missing the start_object")
public void should_suggest() throws Exception {
createIndex("music");
createDocFromClasspathFile("music", "song", "1", "com/github/obourgain/elasticsearch/http/handler/search/suggest/doc1.json");
createDocFromClasspathFile("music", "song", "2", "com/github/obourgain/elasticsearch/http/handler/search/suggest/doc2.json");
createDocFromClasspathFile("music", "song", "3", "com/github/obourgain/elasticsearch/http/handler/search/suggest/doc3.json");
TermSuggestionBuilder termSuggestionBuilder = termSuggestion("terms-suggest").text("everythign").field("name");
SuggestRequest suggest = new SuggestRequest("music")
.suggest(termSuggestionBuilder);
SuggestResponse response = httpClient.suggest(suggest).get();
Assertions.assertThat(response.getSuggestions()).isNotNull();
Assertions.assertThat(response.getSuggestions().names()).hasSize(1);
Completion completion = response.getSuggestions().getCompletion("song-suggest");
Assertions.assertThat(completion.getOptions()).hasSize(3);
// Term term = response.getSuggestions().getTerm("term-suggest");
// Assertions.assertThat(term.getOptions()).hasSize(1);
}
@Test(expected = EmitterException.class)
public void should_fail_on_yaml() throws Exception {
// org.elasticsearch.common.jackson.dataformat.yaml.snakeyaml.emitter.EmitterException: expected DocumentEndEvent, but got <org.elasticsearch.common.jackson.dataformat.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
XContentFactory.yamlBuilder()
.startObject()
.startObject()
.endObject()
.endObject()
;
}
}