diff --git a/pkg/expr/reader_test.go b/pkg/expr/reader_test.go index 1cf2efb0f65..ee0ec2265f4 100644 --- a/pkg/expr/reader_test.go +++ b/pkg/expr/reader_test.go @@ -2,19 +2,23 @@ package expr import ( "encoding/json" + "reflect" "testing" "github.com/grafana/grafana-plugin-sdk-go/data/utils/jsoniter" data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1" + "github.com/grafana/grafana/pkg/expr/mathexp" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/stretchr/testify/require" ) func TestReaderReduceMode(t *testing.T) { testData := []struct { - name string - bytes []byte - expectedError string + name string + bytes []byte + expectError bool + hasMapper bool + mapperType reflect.Type }{ { name: "no_settings", @@ -31,7 +35,8 @@ func TestReaderReduceMode(t *testing.T) { "type": "reduce" } `), - expectedError: "", + expectError: false, + hasMapper: false, }, { name: "mode_dropnn", @@ -51,7 +56,9 @@ func TestReaderReduceMode(t *testing.T) { "type": "reduce" } `), - expectedError: "", + expectError: false, + hasMapper: true, + mapperType: reflect.TypeOf(mathexp.DropNonNumber{}), }, { name: "mode_replacenn", @@ -72,7 +79,9 @@ func TestReaderReduceMode(t *testing.T) { "type": "reduce" } `), - expectedError: "", + expectError: false, + hasMapper: true, + mapperType: reflect.TypeOf(mathexp.ReplaceNonNumberWithValue{}), }, { name: "mode_strict", @@ -92,7 +101,8 @@ func TestReaderReduceMode(t *testing.T) { "type": "reduce" } `), - expectedError: "", + expectError: false, + hasMapper: false, }, { name: "mode_invalid", @@ -112,7 +122,7 @@ func TestReaderReduceMode(t *testing.T) { "type": "reduce" } `), - expectedError: "unsupported reduce mode", + expectError: true, }, } @@ -131,12 +141,21 @@ func TestReaderReduceMode(t *testing.T) { reader := NewExpressionQueryReader(featuremgmt.WithFeatures()) - _, err = reader.ReadQuery(q, iter) + eq, err := reader.ReadQuery(q, iter) - if test.expectedError == "" { - require.NoError(t, err) + if test.expectError { + require.Error(t, err) } else { - require.ErrorContains(t, err, test.expectedError) + require.NoError(t, err) + rc, ok := eq.Command.(*ReduceCommand) + require.True(t, ok) + + if test.hasMapper { + require.NotNil(t, rc.seriesMapper) + require.Equal(t, test.mapperType, reflect.TypeOf(rc.seriesMapper)) + } else { + require.Nil(t, rc.seriesMapper) + } } }) }