From 19502ad32a9e01119c24b13ccfc9692db820190a Mon Sep 17 00:00:00 2001 From: Tanmay Rustagi Date: Fri, 9 Aug 2024 17:54:17 +0200 Subject: [PATCH] - --- go.mod | 1 - .../resource_quality_monitor_test.go | 78 +++++++++++++++---- pluginframework/testing.go | 9 +++ 3 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 pluginframework/testing.go diff --git a/go.mod b/go.mod index 07955a301f..c4ed85a262 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/pluginframework/resource_quality_monitor_test.go b/pluginframework/resource_quality_monitor_test.go index 7cffe1409b..e43f4b3249 100644 --- a/pluginframework/resource_quality_monitor_test.go +++ b/pluginframework/resource_quality_monitor_test.go @@ -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()) } diff --git a/pluginframework/testing.go b/pluginframework/testing.go new file mode 100644 index 0000000000..9a10fc3862 --- /dev/null +++ b/pluginframework/testing.go @@ -0,0 +1,9 @@ +package pluginframework + +import ( + "github.com/hashicorp/terraform-plugin-framework/tfsdk" +) + +func GetPluginFrameworkConfig(s string) tfsdk.Config { + return tfsdk.Config{} // tanmaytodo +}