  @Test
  @DisplayName("Retrieve view table usage from INFORMATION_SCHEMA")
  public void viewTableUsage(final Connection connection) throws Exception {


    int viewCount;
    final Collection<Table> tables = catalog.getTables();
    viewCount = 0;
    assertThat(tables, hasSize(19));
    for (final Table table : tables) {
      if (!(table instanceof View)) {
        continue;
      }
      viewCount = viewCount + 1;
      final View view = (View) table;
      assertThat(view.getTableUsage(), is(empty()));
    }
    assertThat(viewCount, is(1));

    final InformationSchemaViews informationSchemaViews =
        InformationSchemaViewsBuilder.builder()
            .withSql(
                VIEW_TABLE_USAGE,
                "SELECT "
                    + "VIEW_CATALOG, VIEW_SCHEMA, VIEW_NAME, "
                    + "TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME "
                    + "FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE")
            .toOptions();
    final SchemaRetrievalOptionsBuilder schemaRetrievalOptionsBuilder =
        SchemaRetrievalOptionsBuilder.builder();
    schemaRetrievalOptionsBuilder.withInformationSchemaViews(informationSchemaViews);
    final SchemaRetrievalOptions schemaRetrievalOptions = schemaRetrievalOptionsBuilder.toOptions();
    final RetrieverConnection retrieverConnection =
        new RetrieverConnection(connection, schemaRetrievalOptions);

    final SchemaCrawlerOptions options = SchemaCrawlerOptionsBuilder.newSchemaCrawlerOptions();

    final TableExtRetriever tableExtRetriever =
        new TableExtRetriever(retrieverConnection, catalog, options);
    tableExtRetriever.retrieveViewTableUsage();

    viewCount = 0;
    assertThat(tables, hasSize(19));
    for (final Table table : tables) {
      if (!(table instanceof View)) {
        continue;
      }
      viewCount = viewCount + 1;
      final View view = (View) table;
      assertThat(view.getTableUsage(), is(not(empty())));
    }
    assertThat(viewCount, is(1));
  }