@Test
void getFieldTypes() {

  when(client.getIndexMappings("test"))
      .thenReturn(
          ImmutableMap.of(
              "test",
              new IndexMapping(
                  ImmutableMap.<String, String>builder()
                      .put("name", "keyword")
                      .put("address", "text")
                      .put("age", "integer")
                      .put("account_number", "long")
                      .put("balance1", "float")
                      .put("balance2", "double")
                      .put("gender", "boolean")
                      .put("family", "nested")
                      .put("employer", "object")
                      .put("birthday", "date")
                      .build())));
  Table index = new ElasticsearchIndex(client, settings, "test");
  Map<String, ExprType> fieldTypes = index.getFieldTypes();
  assertThat(
      fieldTypes,
      allOf(
          aMapWithSize(10),
          hasEntry("name", (ExprType) ExprCoreType.STRING),
          hasEntry("address", (ExprType) ElasticsearchDataType.ES_TEXT),
          hasEntry("age", (ExprType) ExprCoreType.INTEGER),
          hasEntry("account_number", ExprCoreType.LONG),
          hasEntry("balance1", (ExprType) ExprCoreType.FLOAT),
          hasEntry("balance2", (ExprType) ExprCoreType.DOUBLE),
          hasEntry("gender", (ExprType) ExprCoreType.BOOLEAN),
          hasEntry("family", (ExprType) ExprCoreType.ARRAY),
          hasEntry("employer", (ExprType) ExprCoreType.STRUCT),
          hasEntry("birthday", (ExprType) ExprCoreType.TIMESTAMP)));
}