2025-04-01 10:38:02 +09:00

83 lines
2.9 KiB
Go

package converter
import (
"testing"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/stretchr/testify/assert"
)
func TestMaybeFixValueFieldType(t *testing.T) {
tests := []struct {
name string
valueFields data.Fields
inputType data.FieldType
colIdx int
expectedType data.FieldType
}{
{
name: "should do nothing if both are the same type (bool)",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableBool, 0)},
inputType: data.FieldTypeNullableBool,
colIdx: 0,
expectedType: data.FieldTypeNullableBool,
},
{
name: "should do nothing if both are the same type (string)",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableString, 0)},
inputType: data.FieldTypeNullableString,
colIdx: 0,
expectedType: data.FieldTypeNullableString,
},
{
name: "should do nothing if both are the same type (float64)",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0)},
inputType: data.FieldTypeNullableFloat64,
colIdx: 0,
expectedType: data.FieldTypeNullableFloat64,
},
{
name: "should return nullableJson if both are nullableJson",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableJSON, 0)},
inputType: data.FieldTypeNullableJSON,
colIdx: 0,
expectedType: data.FieldTypeNullableJSON,
},
{
name: "should return nullableString if valueField is nullableJson and input is nullableString",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableJSON, 0)},
inputType: data.FieldTypeNullableString,
colIdx: 0,
expectedType: data.FieldTypeNullableString,
},
{
name: "should return nullableBool if valueField is nullableJson and input is nullableBool",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableJSON, 0)},
inputType: data.FieldTypeNullableBool,
colIdx: 0,
expectedType: data.FieldTypeNullableBool,
},
{
name: "should return nullableFloat64 if valueField is nullableJson and input is nullableFloat64",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableJSON, 0)},
inputType: data.FieldTypeNullableFloat64,
colIdx: 0,
expectedType: data.FieldTypeNullableFloat64,
},
{
name: "should do nothing if valueField is different than nullableJson and input is anything but nullableJson",
valueFields: data.Fields{data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0)},
inputType: data.FieldTypeNullableString,
colIdx: 0,
expectedType: data.FieldTypeNullableFloat64,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
maybeFixValueFieldType(tt.valueFields, tt.inputType, tt.colIdx)
assert.Equal(t, tt.valueFields[tt.colIdx].Type(), tt.expectedType)
})
}
}