package com.silverforge.elasticsearchrawclient.queryDSL.functions;
import com.silverforge.elasticsearchrawclient.BuildConfig;
import com.silverforge.elasticsearchrawclient.definition.FunctionTest;
import com.silverforge.elasticsearchrawclient.definition.Queryable;
import com.silverforge.elasticsearchrawclient.queryDSL.operators.ModifierOperator;
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.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
@Category(value = FunctionTest.class)
public class FieldValueFactorTest {
// region Happy path
@Test
public void when_all_parameters_added_then_function_generated_well() {
Queryable queryable = mock(Queryable.class);
when(queryable.getQueryString()).thenReturn("{\"match_all\":{}}");
String functionString = FieldValueFactor
.builder()
.filter(queryable)
.field("name.first")
.factor(5.6f)
.modifier(ModifierOperator.SQRT)
.missing(3)
.build()
.getFunctionString();
assertThat(functionString, notNullValue());
assertThat(functionString, not(""));
assertThat(functionString.startsWith("{"), is(true));
assertThat(functionString.endsWith("}"), is(true));
assertThat(functionString.indexOf("\"filter\":{\"match_all\":{}}"), greaterThan(0));
assertThat(functionString.indexOf("\"field_value_factor\":{"), greaterThan(0));
assertThat(functionString.indexOf("\"field\":\"name.first\""), greaterThan(0));
assertThat(functionString.indexOf("\"factor\":\"5.6\""), greaterThan(0));
assertThat(functionString.indexOf("\"modifier\":\"sqrt\""), greaterThan(0));
assertThat(functionString.indexOf("\"missing\":\"3\""), greaterThan(0));
}
@Test
public void when_no_filter_added_then_function_generated_well() {
String functionString = FieldValueFactor
.builder()
.field("name.first")
.factor(5.6f)
.modifier(ModifierOperator.SQRT)
.missing(3)
.build()
.getFunctionString();
assertThat(functionString, notNullValue());
assertThat(functionString, not(""));
assertThat(functionString.startsWith("{"), is(true));
assertThat(functionString.endsWith("}"), is(true));
assertThat(functionString.indexOf("\"field_value_factor\":{"), greaterThan(0));
assertThat(functionString.indexOf("\"field\":\"name.first\""), greaterThan(0));
assertThat(functionString.indexOf("\"factor\":\"5.6\""), greaterThan(0));
assertThat(functionString.indexOf("\"modifier\":\"sqrt\""), greaterThan(0));
assertThat(functionString.indexOf("\"missing\":\"3\""), greaterThan(0));
}
// endregion
// region Sad path
@Test
public void when_no_params_added_then_minimal_function_generated_well() {
String functionString = FieldValueFactor
.builder()
.build()
.getFunctionString();
assertThat(functionString, notNullValue());
assertThat(functionString, not(""));
assertThat(functionString, is("{\"field_value_factor\":{}}"));
}
// endregion
}