@@ -3,6 +3,7 @@ package integration_policy
33import (
44 "testing"
55
6+ "github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes"
67 "github.com/hashicorp/terraform-plugin-framework/types"
78 "github.com/stretchr/testify/require"
89)
@@ -62,3 +63,41 @@ func Test_SortInputs(t *testing.T) {
6263 require .Equal (t , want , incoming )
6364 })
6465}
66+
67+ func TestNormalizeVarsJson (t * testing.T ) {
68+ t .Parallel ()
69+
70+ tests := []struct {
71+ name string
72+ existing jsontypes.Normalized
73+ api jsontypes.Normalized
74+ want jsontypes.Normalized
75+ }{
76+ {
77+ name : "plan defines empty object, but api returns null -> preserve empty object" ,
78+ existing : jsontypes .NewNormalizedValue ("{}" ),
79+ api : jsontypes .NewNormalizedNull (),
80+ want : jsontypes .NewNormalizedValue ("{}" ),
81+ },
82+ {
83+ name : "plan does not define value, api returns null -> preserve null" ,
84+ existing : jsontypes .NewNormalizedUnknown (),
85+ api : jsontypes .NewNormalizedNull (),
86+ want : jsontypes .NewNormalizedNull (),
87+ },
88+ }
89+
90+ for _ , tt := range tests {
91+ t .Run (tt .name , func (t * testing.T ) {
92+ result := normalizeVarsJson (tt .existing , tt .api )
93+
94+ // Compare the states and values
95+ require .Equal (t , tt .want .IsNull (), result .IsNull (), "IsNull() should match" )
96+ require .Equal (t , tt .want .IsUnknown (), result .IsUnknown (), "IsUnknown() should match" )
97+
98+ if ! tt .want .IsNull () && ! tt .want .IsUnknown () {
99+ require .Equal (t , tt .want .ValueString (), result .ValueString (), "ValueString() should match" )
100+ }
101+ })
102+ }
103+ }
0 commit comments