@Test
  public void when_String_value_added_with_all_field_name_then_query_generated_well() {
    MatchQuery matchQuery = MatchQuery.builder().allFields().value("Karcag").build();

    String queryString = matchQuery.getQueryString();

    assertThat(queryString, notNullValue());
    assertThat(queryString, not(""));
    assertThat(queryString, is("{\"match\":{\"_all\":\"Karcag\"}}"));
  }
  @Test
  public void when_null_parameters_set_then_most_generic_query_generated() {
    MatchQuery matchQuery = MatchQuery.builder().fieldName(null).value(null).build();

    String queryString = matchQuery.getQueryString();

    assertThat(queryString, notNullValue());
    assertThat(queryString, not(""));
    assertThat(queryString, is("{\"match\":{\"_all\":\"\"}}"));
  }
  @Test
  public void when_nothing_is_defined_then_most_generic_query_generated() {
    MatchQuery matchQuery = MatchQuery.builder().build();

    String queryString = matchQuery.getQueryString();

    assertThat(queryString, notNullValue());
    assertThat(queryString, not(""));
    assertThat(queryString, is("{\"match\":{\"_all\":\"\"}}"));
  }
  @Test
  public void when_no_fields_defined_then_query_generated_well() {

    MatchQuery matchQuery = MatchQuery.builder().value("Karcag").build();

    String queryString = matchQuery.getQueryString();

    assertThat(queryString, notNullValue());
    assertThat(queryString, not(""));
    assertThat(queryString, is("{\"match\":{\"_all\":\"Karcag\"}}"));
  }
  @Test
  public void when_all_query_parameters_added_then_query_generated_well() {
    MatchQuery matchQuery =
        MatchQuery.builder()
            .fieldName("name")
            .query("Karcag Budapest")
            .analyzer(AnalyzerOperator.STANDARD)
            .fuzziness(FuzzinessOperator._0)
            .fuzzyRewrite(FuzzyRewriteOperator.TOP_TERMS_BOOST_N, (byte) 3)
            .lenient(false)
            .operator(LogicOperator.AND)
            .minimumShouldMatchPercentage(12)
            .maxExpansions(2)
            .prefixLength(1)
            .type(PhraseTypeOperator.PHRASE)
            .zeroTermsQuery(ZeroTermsQueryOperator.NONE)
            .build();

    String queryString = matchQuery.getQueryString();

    assertThat(queryString, notNullValue());
    assertThat(queryString, not(""));

    assertThat(queryString.indexOf("{\"match\":{\"name\":{"), is(0));
    assertThat(queryString.indexOf("\"query\":\"Karcag Budapest\""), greaterThan(0));
    assertThat(queryString.indexOf("\"analyzer\":\"standard\""), greaterThan(0));
    assertThat(queryString.indexOf("\"fuzziness\":\"0\""), greaterThan(0));
    assertThat(queryString.indexOf("\"fuzzy_rewrite\":\"top_terms_boost_3\""), greaterThan(0));
    assertThat(queryString.indexOf("\"lenient\":\"false\""), greaterThan(0));
    assertThat(queryString.indexOf("\"operator\":\"and\""), greaterThan(0));
    assertThat(queryString.indexOf("\"minimum_should_match\":\"12%\""), greaterThan(0));
    assertThat(queryString.indexOf("\"max_expansions\":\"2\""), greaterThan(0));
    assertThat(queryString.indexOf("\"prefix_length\":\"1\""), greaterThan(0));
    assertThat(queryString.indexOf("\"type\":\"phrase\""), greaterThan(0));
    assertThat(queryString.indexOf("\"zero_terms_query\":\"none\""), greaterThan(0));

    assertThat(queryString.indexOf("\",\""), greaterThan(0));
    assertThat(queryString.indexOf("\"\""), is(-1));
    assertThat(queryString.indexOf("}}}"), greaterThan(0));
  }
  @Test
  public void when_fuzziness_defined_manually_then_query_generated_well() {
    MatchQuery matchQuery =
        MatchQuery.builder()
            .fieldName("name")
            .query("Kar")
            .fuzziness("5")
            .type(PhraseTypeOperator.PHRASE_PREFIX)
            .build();

    String queryString = matchQuery.getQueryString();

    assertThat(queryString, notNullValue());
    assertThat(queryString, not(""));

    assertThat(queryString.indexOf("{\"match\":{\"name\":{"), is(0));
    assertThat(queryString.indexOf("\"query\":\"Kar\""), greaterThan(0));
    assertThat(queryString.indexOf("\"fuzziness\":\"5\""), greaterThan(0));
    assertThat(queryString.indexOf("\"type\":\"phrase_prefix\""), greaterThan(0));

    assertThat(queryString.indexOf("\",\""), greaterThan(0));
    assertThat(queryString.indexOf("\"\""), is(-1));
    assertThat(queryString.indexOf("}}}"), greaterThan(0));
  }