diff --git a/input_definition.go b/input_definition.go index 10cfafd68..742139a4a 100644 --- a/input_definition.go +++ b/input_definition.go @@ -282,6 +282,9 @@ func (i *InputDefinition) AddFrame(frame InputFrame) error { } func (i *InputDefinition) ValidateAction(action *internal.Action) error { + if action.Frame == "" { + return ErrFrameRequired + } validValues := make(map[string]bool) for _, val := range ValidValueDestination { validValues[val] = true diff --git a/input_definition_test.go b/input_definition_test.go index d8b95d5ba..9a1c4a5a4 100644 --- a/input_definition_test.go +++ b/input_definition_test.go @@ -143,4 +143,11 @@ func TestInputDefinition_LoadDefinition(t *testing.T) { if !strings.Contains(err.Error(), "duplicate rowID with other field") { t.Fatalf("Expected duplicate rowID with other field error, actual error: %s", err) } + + action = internal.Action{ValueDestination: "single-row-boolean", RowID: 100} + def = &internal.InputDefinition{Name: "test", Frames: []*internal.Frame{&frames}, Fields: []*internal.InputDefinitionField{&field}} + err = input.LoadDefinition(def) + if !strings.Contains(err.Error(), "frame required") { + t.Fatalf("Expected frame required error, actual error: %s", err) + } }