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  }