package com.silverforge.elasticsearchrawclient.queryDSL.queries.innerQueries;
import com.silverforge.elasticsearchrawclient.BuildConfig;
import com.silverforge.elasticsearchrawclient.exceptions.MandatoryParametersAreMissingException;
import com.silverforge.elasticsearchrawclient.definition.QueryTest;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
@Category(value = QueryTest.class)
public class SpanFirstQueryTest {
// region Happy path
@Test
public void when_query_defined_then_query_generated()
throws MandatoryParametersAreMissingException {
String queryString = SpanFirstQuery
.builder()
.fieldName("myPreciousField")
.value(34)
.end(6)
.build()
.getQueryString();
assertThat(queryString, notNullValue());
assertThat(queryString, not(""));
assertThat(queryString.startsWith("{\"span_first\":{\"match\":{\"span_term\":{"), is(true));
assertThat(queryString.endsWith("}}"), is(true));
assertThat(queryString.indexOf("\"myPreciousField\":\"34\""), greaterThan(0));
assertThat(queryString.indexOf("\"end\":\"6\""), greaterThan(0));
}
@Test
public void when_query_defined_all_fields_then_query_generated()
throws MandatoryParametersAreMissingException {
String queryString = SpanFirstQuery
.builder()
.allFields()
.value(34)
.end(6)
.build()
.getQueryString();
assertThat(queryString, notNullValue());
assertThat(queryString, not(""));
assertThat(queryString.startsWith("{\"span_first\":{\"match\":{\"span_term\":{"), is(true));
assertThat(queryString.endsWith("}}"), is(true));
assertThat(queryString.indexOf("\"_all\":\"34\""), greaterThan(0));
assertThat(queryString.indexOf("\"end\":\"6\""), greaterThan(0));
}
@Test
public void when_no_end_defined_then_query_generated()
throws MandatoryParametersAreMissingException {
String queryString = SpanFirstQuery
.builder()
.allFields()
.value(34)
.build()
.getQueryString();
assertThat(queryString, notNullValue());
assertThat(queryString, not(""));
assertThat(queryString.startsWith("{\"span_first\":{\"match\":{\"span_term\":{"), is(true));
assertThat(queryString.endsWith("}}"), is(true));
assertThat(queryString.indexOf("\"_all\":\"34\""), greaterThan(0));
assertThat(queryString.indexOf("\"end\":\"3\""), greaterThan(0));
}
// endregion
// region Sad path
@Test(expected = MandatoryParametersAreMissingException.class)
public void when_no_params_defined_then_query_generated()
throws MandatoryParametersAreMissingException {
SpanFirstQuery
.builder()
.build()
.getQueryString();
}
@Test(expected = MandatoryParametersAreMissingException.class)
public void when_no_fields_defined_then_query_generated()
throws MandatoryParametersAreMissingException {
SpanFirstQuery
.builder()
.value(true)
.build()
.getQueryString();
}
@Test(expected = MandatoryParametersAreMissingException.class)
public void when_no_value_defined_then_query_generated()
throws MandatoryParametersAreMissingException {
SpanFirstQuery
.builder()
.fieldName("apple")
.build()
.getQueryString();
}
// endregion
}