github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/edgegriderr/errors_test.go (about) 1 package edgegriderr 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 validation "github.com/go-ozzo/ozzo-validation/v4" 9 "github.com/tj/assert" 10 ) 11 12 func TestValidationErrorsParsing(t *testing.T) { 13 t.Run("no errors", func(t *testing.T) { 14 assert.Equal(t, nil, ParseValidationErrors(nil)) 15 }) 16 17 tests := map[string]struct { 18 input validation.Errors 19 expected string 20 }{ 21 "single error": { 22 input: validation.Errors{ 23 "Error": fmt.Errorf("oops"), 24 }, 25 expected: ` 26 Error: oops`, 27 }, 28 "multiple errors": { 29 input: validation.Errors{ 30 "Error1": fmt.Errorf("oops"), 31 "Error2": fmt.Errorf("oops"), 32 }, 33 expected: ` 34 Error1: oops 35 Error2: oops`, 36 }, 37 "nested error": { 38 input: validation.Errors{ 39 "Error": validation.Errors{ 40 "0": validation.Errors{ 41 "NestedError1": fmt.Errorf("oops"), 42 }, 43 }, 44 }, 45 expected: ` 46 Error[0]: { 47 NestedError1: oops 48 }`, 49 }, 50 "multiple nested errors": { 51 input: validation.Errors{ 52 "Error": validation.Errors{ 53 "0": validation.Errors{ 54 "NestedError1": fmt.Errorf("oops"), 55 }, 56 "1": validation.Errors{ 57 "NestedError1": fmt.Errorf("oops"), 58 }, 59 }, 60 }, 61 expected: ` 62 Error[0]: { 63 NestedError1: oops 64 } 65 Error[1]: { 66 NestedError1: oops 67 }`, 68 }, 69 "errors on multiple levels": { 70 input: validation.Errors{ 71 "Error1": validation.Errors{ 72 "0": validation.Errors{ 73 "NestedError": validation.Errors{ 74 "0": validation.Errors{ 75 "DoubleNestedError1": fmt.Errorf("oops"), 76 "DoubleNestedError2": fmt.Errorf("oops"), 77 }, 78 "1": validation.Errors{ 79 "DoubleNestedError1": fmt.Errorf("oops"), 80 }, 81 }, 82 }, 83 "1": validation.Errors{ 84 "NestedError1": fmt.Errorf("oops"), 85 }, 86 }, 87 "Error2": fmt.Errorf("oops"), 88 }, 89 expected: ` 90 Error1[0]: { 91 NestedError[0]: { 92 DoubleNestedError1: oops 93 DoubleNestedError2: oops 94 } 95 NestedError[1]: { 96 DoubleNestedError1: oops 97 } 98 } 99 Error1[1]: { 100 NestedError1: oops 101 } 102 Error2: oops`, 103 }, 104 } 105 106 for name, test := range tests { 107 t.Run(name, func(t *testing.T) { 108 assert.Equal(t, strings.TrimPrefix(test.expected, "\n"), ParseValidationErrors(test.input).Error()) 109 }) 110 } 111 }