github.com/observiq/carbon@v0.9.11-0.20200820160507-1b872e368a5e/operator/helper/output_test.go (about) 1 package helper 2 3 import ( 4 "testing" 5 6 "github.com/observiq/carbon/operator" 7 "github.com/observiq/carbon/testutil" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestOutputConfigMissingBase(t *testing.T) { 12 config := OutputConfig{} 13 context := testutil.NewBuildContext(t) 14 _, err := config.Build(context) 15 require.Error(t, err) 16 require.Contains(t, err.Error(), "missing required `type` field.") 17 } 18 19 func TestOutputConfigBuildValid(t *testing.T) { 20 config := OutputConfig{ 21 BasicConfig: BasicConfig{ 22 OperatorID: "test-id", 23 OperatorType: "test-type", 24 }, 25 } 26 context := testutil.NewBuildContext(t) 27 _, err := config.Build(context) 28 require.NoError(t, err) 29 } 30 31 func TestOutputConfigNamespace(t *testing.T) { 32 config := OutputConfig{ 33 BasicConfig: BasicConfig{ 34 OperatorID: "test-id", 35 OperatorType: "test-type", 36 }, 37 } 38 config.SetNamespace("test-namespace") 39 require.Equal(t, "test-namespace.test-id", config.ID()) 40 } 41 42 func TestOutputOperatorCanProcess(t *testing.T) { 43 buildContext := testutil.NewBuildContext(t) 44 output := OutputOperator{ 45 BasicOperator: BasicOperator{ 46 OperatorID: "test-id", 47 OperatorType: "test-type", 48 SugaredLogger: buildContext.Logger, 49 }, 50 } 51 require.True(t, output.CanProcess()) 52 } 53 54 func TestOutputOperatorCanOutput(t *testing.T) { 55 buildContext := testutil.NewBuildContext(t) 56 output := OutputOperator{ 57 BasicOperator: BasicOperator{ 58 OperatorID: "test-id", 59 OperatorType: "test-type", 60 SugaredLogger: buildContext.Logger, 61 }, 62 } 63 require.False(t, output.CanOutput()) 64 } 65 66 func TestOutputOperatorOutputs(t *testing.T) { 67 buildContext := testutil.NewBuildContext(t) 68 output := OutputOperator{ 69 BasicOperator: BasicOperator{ 70 OperatorID: "test-id", 71 OperatorType: "test-type", 72 SugaredLogger: buildContext.Logger, 73 }, 74 } 75 require.Equal(t, []operator.Operator{}, output.Outputs()) 76 } 77 78 func TestOutputOperatorSetOutputs(t *testing.T) { 79 buildContext := testutil.NewBuildContext(t) 80 output := OutputOperator{ 81 BasicOperator: BasicOperator{ 82 OperatorID: "test-id", 83 OperatorType: "test-type", 84 SugaredLogger: buildContext.Logger, 85 }, 86 } 87 88 err := output.SetOutputs([]operator.Operator{}) 89 require.Error(t, err) 90 require.Contains(t, err.Error(), "Operator can not output") 91 }