github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/validator_syntax_test.go (about) 1 package ev 2 3 import ( 4 "github.com/go-email-validator/go-email-validator/pkg/ev/evmail" 5 "reflect" 6 "regexp" 7 "testing" 8 ) 9 10 func Test_syntaxValidator_Validate(t *testing.T) { 11 type fields struct{} 12 type args struct { 13 email evmail.Address 14 } 15 tests := []struct { 16 name string 17 fields fields 18 args args 19 want ValidationResult 20 }{ 21 { 22 name: "success", 23 fields: fields{}, 24 args: args{ 25 email: validEmail, 26 }, 27 want: NewValidResult(SyntaxValidatorName), 28 }, 29 { 30 name: "invalid", 31 fields: fields{}, 32 args: args{ 33 email: invalidEmail, 34 }, 35 want: syntaxGetError(), 36 }, 37 } 38 for _, tt := range tests { 39 t.Run(tt.name, func(t *testing.T) { 40 sy := NewSyntaxValidator() 41 if got := sy.Validate(NewInput(tt.args.email)); !reflect.DeepEqual(got, tt.want) { 42 t.Errorf("Validate() = %v, want %v", got, tt.want) 43 } 44 }) 45 } 46 } 47 48 func Test_syntaxRegexValidator_Validate(t *testing.T) { 49 invalidRegExp := regexp.MustCompile("^@$") 50 51 type fields struct { 52 AValidatorWithoutDeps AValidatorWithoutDeps 53 emailRegex *regexp.Regexp 54 } 55 type args struct { 56 email evmail.Address 57 } 58 tests := []struct { 59 name string 60 fields fields 61 args args 62 want ValidationResult 63 }{ 64 { 65 name: "success with default regex", 66 fields: fields{ 67 emailRegex: nil, 68 }, 69 args: args{ 70 email: validEmail, 71 }, 72 want: NewValidResult(SyntaxValidatorName), 73 }, 74 { 75 name: "invalid with default regex", 76 fields: fields{ 77 emailRegex: defaultEmailRegex, 78 }, 79 args: args{ 80 email: invalidEmail, 81 }, 82 want: syntaxGetError(), 83 }, 84 { 85 name: "invalid with custom regex", 86 fields: fields{ 87 emailRegex: invalidRegExp, 88 }, 89 args: args{ 90 email: validEmail, 91 }, 92 want: syntaxGetError(), 93 }, 94 } 95 for _, tt := range tests { 96 t.Run(tt.name, func(t *testing.T) { 97 s := NewSyntaxRegexValidator(tt.fields.emailRegex) 98 if got := s.Validate(NewInput(tt.args.email)); !reflect.DeepEqual(got, tt.want) { 99 t.Errorf("Validate() = %v, want %v", got, tt.want) 100 } 101 }) 102 } 103 } 104 105 func TestSyntaxError_Error(t *testing.T) { 106 tests := []struct { 107 name string 108 want string 109 }{ 110 { 111 want: SyntaxErr, 112 }, 113 } 114 for _, tt := range tests { 115 t.Run(tt.name, func(t *testing.T) { 116 sy := SyntaxError{} 117 if got := sy.Error(); got != tt.want { 118 t.Errorf("Error() = %v, want %v", got, tt.want) 119 } 120 }) 121 } 122 }