// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package jsonfunction import ( "fmt" "testing" "github.com/google/go-cmp/cmp" "github.com/zclconf/go-cty-debug/ctydebug" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/function" ) func TestMarshalParameter(t *testing.T) { tests := []struct { Name string Input *function.Parameter Want *parameter }{ { "call with nil", nil, ¶meter{}, }, { "parameter with description", &function.Parameter{ Name: "timestamp", Description: "`timestamp` returns a UTC timestamp string in [RFC 3339]", Type: cty.String, }, ¶meter{ Name: "timestamp", Description: "`timestamp` returns a UTC timestamp string in [RFC 3339]", Type: cty.String, }, }, { "parameter with additional properties", &function.Parameter{ Name: "value", Type: cty.DynamicPseudoType, AllowUnknown: true, AllowNull: true, AllowMarked: true, AllowDynamicType: true, }, ¶meter{ Name: "value", Type: cty.DynamicPseudoType, IsNullable: true, }, }, } for i, test := range tests { t.Run(fmt.Sprintf("%d-%s", i, test.Name), func(t *testing.T) { got := marshalParameter(test.Input) if diff := cmp.Diff(test.Want, got, ctydebug.CmpOptions); diff != "" { t.Fatalf("mismatch of parameter signature: %s", diff) } }) } }