Skip to content

Commit

Permalink
test: table acceptance and integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
hpors-anwb committed Feb 28, 2025
1 parent 802d237 commit a83af23
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 16 deletions.
45 changes: 32 additions & 13 deletions pkg/datasources/tables_acceptance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"testing"

acc "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance"

"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/tfversion"
)
Expand All @@ -16,6 +15,7 @@ func TestAcc_Tables(t *testing.T) {
tableName := acc.TestClient().Ids.Alpha()
stageName := acc.TestClient().Ids.Alpha()
externalTableName := acc.TestClient().Ids.Alpha()

resource.Test(t, resource.TestCase{
ProtoV6ProviderFactories: acc.TestAccProtoV6ProviderFactories,
PreCheck: func() { acc.TestAccPreCheck(t) },
Expand All @@ -26,12 +26,22 @@ func TestAcc_Tables(t *testing.T) {
Steps: []resource.TestStep{
{
Config: tables(databaseName, schemaName, tableName, stageName, externalTableName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("data.snowflake_tables.t", "database", databaseName),
resource.TestCheckResourceAttr("data.snowflake_tables.t", "schema", schemaName),
resource.TestCheckResourceAttrSet("data.snowflake_tables.t", "tables.#"),
resource.TestCheckResourceAttr("data.snowflake_tables.t", "tables.#", "1"),
resource.TestCheckResourceAttr("data.snowflake_tables.t", "tables.0.name", tableName),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.#", "1"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.name", tableName),
resource.TestCheckResourceAttrSet("data.snowflake_tables.in_schema", "tables.0.created_on"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.database_name", databaseName),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.schema_name", schemaName),
resource.TestCheckResourceAttrSet("data.snowflake_tables.in_schema", "tables.0.owner"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.comment", ""),
resource.TestCheckResourceAttrSet("data.snowflake_tables.in_schema", "tables.0.text"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.is_secure", "false"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.is_materialized", "false"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.owner_role_type", "ROLE"),
resource.TestCheckResourceAttr("data.snowflake_tables.in_schema", "tables.0.change_tracking", "OFF"),

resource.TestCheckResourceAttr("data.snowflake_tables.filtering", "tables.#", "1"),
resource.TestCheckResourceAttr("data.snowflake_tables.filtering", "tables.0.name", tableName),
),
},
},
Expand All @@ -40,7 +50,6 @@ func TestAcc_Tables(t *testing.T) {

func tables(databaseName string, schemaName string, tableName string, stageName string, externalTableName string) string {
return fmt.Sprintf(`
resource snowflake_database "d" {
name = "%v"
}
Expand Down Expand Up @@ -74,16 +83,26 @@ func tables(databaseName string, schemaName string, tableName string, stageName
column {
name = "column1"
type = "STRING"
as = "TO_VARCHAR(TO_TIMESTAMP_NTZ(value:unix_timestamp_property::NUMBER, 3), 'yyyy-mm-dd-hh')"
as = "TO_VARCHAR(TO_TIMESTAMP_NTZ(value:unix_timestamp_property::NUMBER, 3), 'yyyy-mm-dd-hh')"
}
file_format = "TYPE = CSV"
location = "@${snowflake_database.d.name}.${snowflake_schema.s.name}.${snowflake_stage.s.name}"
}
data snowflake_tables "t" {
database = snowflake_table.t.database
schema = snowflake_table.t.schema
data snowflake_tables "in_schema" {
depends_on = [snowflake_table.t, snowflake_external_table.et]
in {
schema = snowflake_schema.s.fully_qualified_name
}
}
data snowflake_tables "filtering" {
depends_on = [snowflake_table.t, snowflake_external_table.et]
in {
database = snowflake_schema.s.database
}
like = "%v"
starts_with = trimsuffix("%v", "%%")
}
`, databaseName, schemaName, tableName, stageName, externalTableName)
`, databaseName, schemaName, tableName, stageName, externalTableName, tableName+"%", tableName+"%")
}
10 changes: 7 additions & 3 deletions pkg/sdk/testint/tables_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,9 @@ func TestInt_Table(t *testing.T) {
table, tableCleanup := testClientHelper().Table.Create(t)
t.Cleanup(tableCleanup)

tables, err := client.Tables.Show(ctx, sdk.NewShowTableRequest().WithTerse(sdk.Bool(true)).WithLikePattern(table.ID().Name()))
tables, err := client.Tables.Show(ctx, sdk.NewShowTableRequest().WithTerse(*sdk.Bool(true)).WithLike(sdk.Like{
Pattern: sdk.String(table.Name),
}))
require.NoError(t, err)
assert.Equal(t, 1, len(tables))

Expand All @@ -890,15 +892,17 @@ func TestInt_Table(t *testing.T) {
table, tableCleanup := testClientHelper().Table.Create(t)
t.Cleanup(tableCleanup)

tables, err := client.Tables.Show(ctx, sdk.NewShowTableRequest().WithStartsWith(sdk.String(table.Name)))
tables, err := client.Tables.Show(ctx, sdk.NewShowTableRequest().WithStartsWith(*sdk.String(table.Name)))
require.NoError(t, err)
assert.Equal(t, 1, len(tables))

assertTable(t, &tables[0], table.ID())
})

t.Run("when searching a non-existent table", func(t *testing.T) {
tables, err := client.Tables.Show(ctx, sdk.NewShowTableRequest().WithLikePattern("non-existent"))
tables, err := client.Tables.Show(ctx, sdk.NewShowTableRequest().WithLike(sdk.Like{
Pattern: sdk.String("non-existent"),
}))
require.NoError(t, err)
assert.Equal(t, 0, len(tables))
})
Expand Down

0 comments on commit a83af23

Please sign in to comment.