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  }