From 929ce8464ae64c01c9993c794ea59fcad6ea2702 Mon Sep 17 00:00:00 2001 From: Bruno Schaatsbergen Date: Sun, 31 Mar 2024 23:19:43 +0200 Subject: [PATCH] chore: add more tests to the functions using the dynamic parameter --- internal/provider/not_null_function_test.go | 185 +++++++++++++++++++- internal/provider/null_function_test.go | 155 +++++++++++++++- 2 files changed, 337 insertions(+), 3 deletions(-) diff --git a/internal/provider/not_null_function_test.go b/internal/provider/not_null_function_test.go index e7fef6a..887d81a 100644 --- a/internal/provider/not_null_function_test.go +++ b/internal/provider/not_null_function_test.go @@ -39,7 +39,7 @@ func TestNotNullFunction(t *testing.T) { }) } -func TestNotNullFunction_null(t *testing.T) { +func TestNotNullFunction_Object(t *testing.T) { t.Parallel() resource.UnitTest(t, resource.TestCase{ TerraformVersionChecks: []tfversion.TerraformVersionCheck{ @@ -50,12 +50,193 @@ func TestNotNullFunction_null(t *testing.T) { { Config: ` locals { - person = null + person = { + first_name = "John" + last_name = "Doe" + } + } + output "test" { + value = provider::assert::not_null(local.person) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_String(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + person = "John Doe" } output "test" { value = provider::assert::not_null(local.person) } `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_Int(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + number = 14 + } + output "test" { + value = provider::assert::not_null(local.number) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_Function(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + number = max(1, 2) + } + output "test" { + value = provider::assert::not_null(local.number) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_List(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + fruits = ["apple", "banana", "cherry"] + } + output "test" { + value = provider::assert::not_null(local.fruits) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_Map(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + kvmap = { + "first_name" = "John" + "last_name" = "Doe" + } + } + output "test" { + value = provider::assert::not_null(local.kvmap) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_Set(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + set = toset(["apple", "banana", "cherry"]) + } + output "test" { + value = provider::assert::not_null(local.set) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "true"), + ), + }, + }, + }) +} + +func TestNotNullFunction_Null(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + object = null + } + output "test" { + value = provider::assert::not_null(local.object) + } + `, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckOutput("test", "false"), ), diff --git a/internal/provider/null_function_test.go b/internal/provider/null_function_test.go index 1e31495..a3de870 100644 --- a/internal/provider/null_function_test.go +++ b/internal/provider/null_function_test.go @@ -36,7 +36,7 @@ func TestIsNullFunction(t *testing.T) { }) } -func TestIsNullFunction_notNull(t *testing.T) { +func TestIsNullFunction_NotNull_Object(t *testing.T) { t.Parallel() resource.UnitTest(t, resource.TestCase{ TerraformVersionChecks: []tfversion.TerraformVersionCheck{ @@ -63,3 +63,156 @@ func TestIsNullFunction_notNull(t *testing.T) { }, }) } + +func TestIsNullFunction_NotNull_String(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + person = "John Doe" + } + output "test" { + value = provider::assert::null(local.person) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "false"), + ), + }, + }, + }) +} + +func TestIsNullFunction_NotNull_Int(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + number = 14 + } + output "test" { + value = provider::assert::null(local.number) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "false"), + ), + }, + }, + }) +} + +func TestIsNullFunction_NotNull_Function(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + number = max(1, 2) + } + output "test" { + value = provider::assert::null(local.number) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "false"), + ), + }, + }, + }) +} + +func TestIsNullFunction_NotNull_List(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + fruits = ["apple", "banana", "cherry"] + } + output "test" { + value = provider::assert::null(local.fruits) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "false"), + ), + }, + }, + }) +} + +func TestIsNullFunction_NotNull_Map(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + kvmap = { + "first_name" = "John" + "last_name" = "Doe" + } + } + output "test" { + value = provider::assert::null(local.kvmap) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "false"), + ), + }, + }, + }) +} + +func TestIsNullFunction_NotNull_Set(t *testing.T) { + t.Parallel() + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(version.Must(version.NewVersion(MinimalRequiredTerraformVersion))), + }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: ` + locals { + set = toset(["apple", "banana", "cherry"]) + } + output "test" { + value = provider::assert::null(local.set) + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckOutput("test", "false"), + ), + }, + }, + }) +}