github.com/getgauge/gauge@v1.6.9/validation/suggest_test.go (about)

     1  /*----------------------------------------------------------------
     2   *  Copyright (c) ThoughtWorks, Inc.
     3   *  Licensed under the Apache License, Version 2.0
     4   *  See LICENSE in the project root for license information.
     5   *----------------------------------------------------------------*/
     6  
     7  package validation
     8  
     9  import (
    10  	"errors"
    11  	"reflect"
    12  	"testing"
    13  
    14  	gm "github.com/getgauge/gauge-proto/go/gauge_messages"
    15  	"github.com/getgauge/gauge/gauge"
    16  )
    17  
    18  var implNotFound = gm.StepValidateResponse_STEP_IMPLEMENTATION_NOT_FOUND
    19  var dupImplFound = gm.StepValidateResponse_DUPLICATE_STEP_IMPLEMENTATION
    20  
    21  func TestGroupErrors(t *testing.T) {
    22  	implNotFoundError := StepValidationError{
    23  		errorType:  &implNotFound,
    24  		suggestion: "suggestion",
    25  	}
    26  	dupImplFoundError := StepValidationError{
    27  		errorType:  &dupImplFound,
    28  		suggestion: "suggestion1",
    29  	}
    30  	errs := map[*gauge.Specification][]error{
    31  		&gauge.Specification{}: []error{implNotFoundError},
    32  		&gauge.Specification{}: []error{dupImplFoundError},
    33  		&gauge.Specification{}: []error{errors.New("error")},
    34  		&gauge.Specification{}: []error{implNotFoundError, dupImplFoundError},
    35  	}
    36  	want := map[gm.StepValidateResponse_ErrorType][]StepValidationError{
    37  		implNotFound: []StepValidationError{implNotFoundError, implNotFoundError},
    38  		dupImplFound: []StepValidationError{dupImplFoundError, dupImplFoundError},
    39  	}
    40  	got := groupErrors(validationErrors(errs))
    41  
    42  	if !reflect.DeepEqual(got, want) {
    43  		t.Errorf("Grouping of step validation errors failed. got: %v, want: %v", got, want)
    44  	}
    45  }
    46  
    47  func TestGetSuggestionMessageForStepImplNotFoundError(t *testing.T) {
    48  	want := message[implNotFound]
    49  
    50  	got := getSuggestionMessage(implNotFound)
    51  
    52  	if got != want {
    53  		t.Errorf("Wrong suggestion message. got: %v, want: %v", got, want)
    54  	}
    55  }
    56  
    57  func TestFilterDuplicateSuggestions(t *testing.T) {
    58  	dupImplFoundError := StepValidationError{
    59  		errorType:  &dupImplFound,
    60  		suggestion: "suggestion1",
    61  	}
    62  
    63  	want := []string{"suggestion1"}
    64  	got := filterDuplicateSuggestions([]StepValidationError{dupImplFoundError, dupImplFoundError})
    65  
    66  	if !reflect.DeepEqual(want, got) {
    67  		t.Errorf("Wrong suggestion message. got: %v, want: %v", got, want)
    68  	}
    69  }
    70  
    71  func TestGetSuggestionMessageForOtherValidationErrors(t *testing.T) {
    72  	want := "Suggestions for fixing `Duplicate step implementation` errors.\n"
    73  
    74  	got := getSuggestionMessage(dupImplFound)
    75  
    76  	if got != want {
    77  		t.Errorf("Wrong suggestion message. got: %v, want: %v", got, want)
    78  	}
    79  }