Skip to content

Commit

Permalink
-
Browse files Browse the repository at this point in the history
  • Loading branch information
tanmay-db committed Aug 9, 2024
1 parent 90d5b65 commit 19502ad
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 15 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ require (
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-exec v0.21.0 // indirect
github.com/hashicorp/terraform-json v0.22.1 // indirect
github.com/hashicorp/terraform-plugin-testing v1.9.0 // indirect
github.com/hashicorp/terraform-registry-address v0.2.3 // indirect
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
Expand Down
78 changes: 64 additions & 14 deletions pluginframework/resource_quality_monitor_test.go
Original file line number Diff line number Diff line change
@@ -1,23 +1,73 @@
package pluginframework

import (
"context"
"testing"

"github.com/hashicorp/terraform-plugin-go/tfprotov6"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/databricks/databricks-sdk-go/experimental/mocks"
"github.com/databricks/databricks-sdk-go/service/catalog"
"github.com/databricks/terraform-provider-databricks/common"
pluginFrameworkResource "github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)

func getProtoV6ProviderFactory() map[string]func() (tfprotov6.ProviderServer, error) {
return nil
}

func TestQualityMonitorCreate(t *testing.T) {
resource.UnitTest(t, resource.TestCase{
ProtoV6ProviderFactories: getProtoV6ProviderFactory(),
Steps: []resource.TestStep{
{
ResourceName: "databricks_quality_monitor_pluginframework",
func TestQualityMonitorCreateTimeseriesPluginFramework(t *testing.T) {
// Setup mock workspace or account client whichever is applicable
// This will be use to mock the databricks-sdk-go calls
MockWorkspaceClientFunc := func(w *mocks.MockWorkspaceClient) {
e := w.GetMockQualityMonitorsAPI().EXPECT()
e.Create(mock.Anything, catalog.CreateMonitor{
TableName: "test_table",
OutputSchemaName: "output.schema",
AssetsDir: "sample.dir",
TimeSeries: &catalog.MonitorTimeSeries{
Granularities: []string{"1 day"},
TimestampCol: "timestamp",
},
},
})
}).Return(&catalog.MonitorInfo{
AssetsDir: "sample.dir",
OutputSchemaName: "output.schema",
TableName: "test_table",
Status: catalog.MonitorInfoStatusMonitorStatusPending,
DriftMetricsTableName: "test_table_drift",
}, nil)
e.GetByTableName(mock.Anything, "test_table").Return(&catalog.MonitorInfo{
TableName: "test_table",
Status: catalog.MonitorInfoStatusMonitorStatusActive,
AssetsDir: "sample.dir",
OutputSchemaName: "output.schema",
DriftMetricsTableName: "test_table_drift",
}, nil)
}
_ = MockWorkspaceClientFunc

// Start the server
// tanmaytodo

// Create resource using the above mock workspace client
qualityMonitorResource := QualityMonitorResource{
Client: &common.DatabricksClient{},
}

// Create request and response for the respective CRUD operation and pass the config
createRequest := pluginFrameworkResource.CreateRequest{
Config: GetPluginFrameworkConfig(`
table_name = "test_table",
assets_dir = "sample.dir",
output_schema_name = "output.schema",
time_series = {
granularities = ["1 day"],
timestamp_col = "timestamp"
}
`),
}
createResponse := pluginFrameworkResource.CreateResponse{}
ctx := context.Background()

// Call the method to unit test
qualityMonitorResource.Create(ctx, createRequest, &createResponse)

// Add assertions
assert.False(t, createResponse.Diagnostics.HasError())
}
9 changes: 9 additions & 0 deletions pluginframework/testing.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package pluginframework

import (
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
)

func GetPluginFrameworkConfig(s string) tfsdk.Config {
return tfsdk.Config{} // tanmaytodo
}

0 comments on commit 19502ad

Please sign in to comment.