package com.silverforge.elasticsearchrawclient.queryDSL.queries.innerQueries; import com.silverforge.elasticsearchrawclient.BuildConfig; import com.silverforge.elasticsearchrawclient.definition.QueryTest; import com.silverforge.elasticsearchrawclient.definition.Queryable; 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.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) @Category(value = QueryTest.class) public class ConstantScoreQueryTest { // region Happy path @Test public void when_filter_andboost_added_then_the_whole_query_is_generated() { Queryable matchAllQueryable = mock(Queryable.class); when(matchAllQueryable.getQueryString()).thenReturn("{\"match_all\":{}}"); ConstantScoreQuery query = ConstantScoreQuery .builder() .filter(matchAllQueryable) .boost(1.2F) .build(); String queryString = query.getQueryString(); System.out.println(queryString); assertThat(queryString, notNullValue()); assertThat(queryString, not("")); assertThat(queryString.startsWith("{\"constant_score\":{\"filter\":"), is(true)); assertThat(queryString.endsWith("}}"), is(true)); assertThat(queryString.indexOf("\"boost\":\"1.2\""), greaterThan(0)); assertThat(queryString.indexOf("\"filter\":{\"match_all\":{}}"), greaterThan(0)); } @Test public void when_only_filter_added_then_the_query_is_generated() { Queryable matchAllQueryable = mock(Queryable.class); when(matchAllQueryable.getQueryString()).thenReturn("{\"match_all\":{}}"); ConstantScoreQuery query = ConstantScoreQuery .builder() .filter(matchAllQueryable) .build(); String queryString = query.getQueryString(); System.out.println(queryString); assertThat(queryString, notNullValue()); assertThat(queryString, not("")); assertThat(queryString.startsWith("{\"constant_score\":{\"filter\":"), is(true)); assertThat(queryString.endsWith("}}"), is(true)); assertThat(queryString.indexOf("\"boost\""), is(-1)); } // endregion // region Sad path @Test public void when_no_param_defined_then_empty_query_is_generated() { ConstantScoreQuery query = ConstantScoreQuery .builder() .build(); String queryString = query.getQueryString(); System.out.println(queryString); assertThat(queryString, notNullValue()); assertThat(queryString, not("")); assertThat(queryString, is("{\"constant_score\":{}}")); } // endregion }