83 lines
2.9 KiB
Go
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)
|
|
})
|
|
}
|
|
}
|