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 }